我有以下javascript行:
<div id="box" name="1" margin="4px" padding="4px" onclick="memory(1)"></div>
关联的memory()
函数为:
function memory(a) {
var tmpDar = a-1;
var m = document.getElementsByName(tmpDar);
m.innerHTML = arrA[tmpDar];
}
但是,当我尝试执行代码时,HTML不会改变......有人可以帮助我吗?
答案 0 :(得分:1)
document.getElementsByName()
返回NodeList而不是单个元素!
因此,为了设置div的innerHTML
,你必须引用该数组中的一个条目,例如:
function memory(a) {
var tmpDar = a-1;
var m = document.getElementsByName(tmpDar);
m[0].innerHTML = arrA[tmpDar];
}
在代码中,为NodeList对象设置innerHTML
属性,该对象在文档中没有(可视)效果。
一般情况下,最好使用id
代替name
。然后你可以用这样的方式使用document.getElementById()
:
function memory(a) {
var tmpDar = a-1;
var m = document.getElementById(tmpDar);
m.innerHTML = arrA[tmpDar];
}
答案 1 :(得分:0)
据我所知,您试图找到名称为0
的所有元素。并且没有0
名称。
另外两个人说的是,它返回一个你需要在该数组上调用索引的数组。
答案 2 :(得分:0)
document.getElementsByName
返回一个数组。因此,如果您想要的元素是唯一的此名称,您应该用以下代码替换您的代码:
function memory(a) {
var tmpDar = a-1;
var m = document.getElementsByName(tmpDar);
m[0].innerHTML = arrA[tmpDar]; // Here I have added index 0
}