【发布时间】:2017-08-17 14:44:57
【问题描述】:
我对 HTML
<html>
<head>
<title>Titlehere</title>
<p> Hello></p>
</head>
<body>
<div id="tab1" onload="populatehtmlTab1()">
<p>i1</p>
</div>
<div id="tab2" onload="populatehtmlTab2()">
<p>i2</p>
</div>
<script type="text/javascript">
function populatehtmlTab1() {
document.getElementById(tab1).innerHTML = document.getElementById(tab1).innerHTML + "<p>h1</p>";
}
function populatehtmlTab2() {
document.getElementById(tab2).innerHTML = document.getElementById(tab1).innerHTML + "<p>h2</p>";
}
</script>
</body>
</html>
【问题讨论】:
-
getElementById(tab1)=>getElementById('tab1')选择器必须是字符串 -
@MysterX:这不是选择器,而是 ID。但是,是的,这就是问题所在。以错字/非重复投票结束。
-
您可能想知道为什么没有收到错误消息。原因是当你给元素
id值时,浏览器会为它们创建自动全局变量,所以tab1不是未知标识符,它是一个引用元素实例的全局变量。如果您将该元素实例传递给getElementById,它将被转换为字符串,然后将该字符串用作要查找的ID。并且不会被发现。 :-)(那么为什么不使用自动全局变量?浏览器的全局范围内有太多冲突。最好使用getElementById故意检索它们。) -
你可以简化一下:
document.getElementById('tab2').innerHTML += "<p>h2</p>"; -
@OmSao:“参数化”不是正确的词。如果您的意思是“将它们放在引号中”,那么实际上没有比“将它们放在引号中”更短的表达方式了。 :-)
标签: javascript jquery html innerhtml