javascript - 一个 JavaScript 函数禁用其他函数

标签 javascript innerhtml

我有3个功能:

window.onload = function() {       
    canvas();   
    changeColor();
    blockSize();    
}

问题出在第三个“blockSize()”上。当我将它放在 window.onlod 函数的底部时它没有运行; + 当我将它放在顶部时,它会禁用其下面的所有功能。这是代码(计算类名“size”的所有 block 的宽度和高度的百分比):

function blockSize() {
    var block = document.getElementsByClassName("size");    
    for (var i in block) {       
        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);
    }    
}

注意到,当我追加Child(最后一行)时,这个问题就出现了。当我删除它时,其他功能可以正常工作。还尝试将 手动放入 div 中并使用此 javascript 行(相同的结果):

block[i].firstChild.innerHTML = width+"x"+height+"%";

!!!当我只使用innerHTML 时,一切正常。我明白,我可以使用这样的东西,它会起作用:

block[i].innerHTML = "<span>"+width+"x"+height+"</span>";

最佳答案

问题很可能是由于在 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);
    }    
}

关于javascript - 一个 JavaScript 函数禁用其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27276660/

相关文章:

javascript - 在teardown()之后调用render()不显示列表数据

javascript - 在 ng-repeat 中使用 ng-class 更改类

javascript - 如何使用 `document.getElementByID("结果进行打印").innerHTML = 结果?

javascript - 具有特定innerHTML的Jquery选择器

javascript - 我可以在 Mongo Shell Javascript 文件中读取 csv 文件吗?

javascript - 在 react 中访问回调内部的 event.target

javascript - 如何对数据库变量进行健全性和验证检查?

JavaScript:事件触发恢复innerHtml属性

javascript - 在 JavaScript 中用 + 添加到 innerHTML 是什么意思?

javascript - 使用innerHTML构建动态表格