一个javascript函数禁用其他函数
我有3个功能:一个javascript函数禁用其他函数,javascript,innerhtml,Javascript,Innerhtml,我有3个功能: window.onload = function() { canvas(); changeColor(); blockSize(); } 问题在于第三个“blockSize()。当我把它放在窗口底部时,它没有运行。onlod函数;+当我把它放在顶部时,它会禁用它下面的所有功能。下面是代码(以类名为“size”的所有块的百分比计算宽度和高度): 注意,当我添加child(最后一行)时,这个问题出现了。当我删除它时,其他功能正常工
window.onload = function() {
canvas();
changeColor();
blockSize();
}
问题在于第三个“blockSize()。当我把它放在窗口底部时,它没有运行。onlod函数;+当我把它放在顶部时,它会禁用它下面的所有功能。下面是代码(以类名为“size”的所有块的百分比计算宽度和高度):
注意,当我添加child(最后一行)时,这个问题出现了。当我删除它时,其他功能正常工作。还尝试手动将放入div中,并改用此javascript行(结果相同):
!!!当我只使用innerHTML时,一切正常。我明白,我可以使用这样的东西,它会起作用:
block[i].innerHTML = "<span>"+width+"x"+height+"</span>";
block[i].innerHTML=“”+宽度+“x”+高度+”;
问题很可能是由于在HTMLCollection上不正确地使用for in
。这将包括DOM元素之外的其他项
当它遇到block[i].appendChild(span)
时,如果block[i]
不是元素,因此没有.appendChild()
方法,它将抛出错误
改为使用for
循环
function blockSize() {
var block = document.getElementsByClassName("size");
for (var i = 0; i < block.length; i++) {
var width = Math.round(block[i].clientWidth/document.documentElement.clientWidth*100);
var height = Math.round(block[i].clientHeight/document.documentElement.clientHeight*100);
var span = document.createElement("span");
span.innerHTML = width+"x"+height+"%";
block[i].appendChild(span);
}
}
函数块大小(){
var block=document.getElementsByClassName(“大小”);
对于(var i=0;i
您检查过控制台是否有错误吗?您能发布完整的代码(其他功能)吗?这个问题似乎离题了,因为这是一个问题,如果OP只看一下控制台就可以解决。这是控制台代码,它没有告诉我,该问题在循环中:uncaughttypeerror:无法设置未定义的
基本调试的属性“innerHTML”。根据错误消息,在调试器中快速插入console.log(block[i])
或断点以查看内容会显示您正在迭代不想迭代的内容,然后,至少,你可以在你的问题中包含更多关于这个问题的信息,或者你自己也可以看到发生了什么。了解基本的调试步骤非常重要,这样您就可以检查受影响区域内的情况。谢谢,问题已经解决。没想到问题会出现在中。在接下来的所有时间里,我们将只使用For
循环。@Mark1ra:是的,在JS中处理数组或类似数组的对象时,最好使用For
。这是一个经典的例子,说明了为什么永远不应该使用For/in来迭代数组。
block[i].innerHTML = "<span>"+width+"x"+height+"</span>";
function blockSize() {
var block = document.getElementsByClassName("size");
for (var i = 0; i < block.length; i++) {
var width = Math.round(block[i].clientWidth/document.documentElement.clientWidth*100);
var height = Math.round(block[i].clientHeight/document.documentElement.clientHeight*100);
var span = document.createElement("span");
span.innerHTML = width+"x"+height+"%";
block[i].appendChild(span);
}
}