选择allElementsByID并向其添加课程时出错

时间:2016-05-31 06:24:03

标签: javascript jquery getelementsbyname

您好我试图在网页上为我的所有元素添加一个类。总体目标是获取网页上的所有元素并添加到类中。包含字体大小的类将被更改为隐藏消息。

我收到此错误 未捕获的TypeError:无法设置属性' innerHTML'为null

我已经尝试将我的脚本移到index.html的body标签之外,但它仍无效。

另一个问题是我无法为我选择的所有ID添加课程。我可以手动添加类,如

$("#iconLog").addClass("style"); //this works

但是当我尝试添加这样的类

empTwo = "#" + temp;    //where empTwo is a string that equals "#iconLog"   
$("empTwo").addClass("style") //this does not work

我将在下面发布我的整个脚本以供参考

$(function() {

    var hideMsg = "f";
    var n = hideMsg.length;

    var i;
    var j;
    var holder;
    var hideHolder;

    // on button click - hide msg
    $('#btnHide').on('click', function() {

        //grab all IDS ON WEBPAGE

        var allElements = document.getElementsByTagName("*");
        var allIds = [];
        for (var i = 0, n = allElements.length; i < n; ++i) {
          var el = allElements[i];
          if (el.id) { 
              allIds.push(el.id);
           }
        }

        //ERRORS HAPPENING IN THIS LOOP
        for(var i = 0; i < allElements.length; ++i)
        {
            console.log(allIds[i]);
            try{
                var temp = document.getElementById(allIds[i]).id;
            }
            catch(err){
                document.getElementById("*").innerHTML = err.message;
            }

            tempTwo = "#" + temp;
            console.log(tempTwo);

            //$("#iconLog").addClass("style") //this works
            $("tempTwo").addClass("style"); //this does not work
        }

        for(i = 0; i < n; i++) {

            //set var holder to first value of the message to hide
            holder = hideMsg.charCodeAt(i);

            for(j = 7; -1 < j; j--) {

                //set hideHolder to holders value
                hideHolder = holder;
                //mask hideHolder to grab the first bit to hide
                hideHolder = hideHolder & (1<<j);

                //grab the first element ID

                if(hideHolder === 0) {

                    // embed the bit
                    // bitwise     &= 

                } else {    
                    //embed the bit
                    // bitwise ^=
                }   
            }   
        }
    });

});

5 个答案:

答案 0 :(得分:1)

empTwo删除双引号。当您将varible作为选择器传递时,您不需要引号。变量本身包含一个字符串,因此您不需要引号。

empTwo = "#" + temp;      
$(empTwo).addClass("style") //this will work

答案 1 :(得分:1)

阱, 试试这个...

您在配额中传递了varibale,因为它没有获得 empTwo 的值,而是直接搜索&#34; empTwo&#34;。

$(empTwo).addClass("style");

让所有元素尝试这个 -

var allElements = = document.body.getElementsByTagName("*");

希望这会对您有所帮助:)

答案 2 :(得分:1)

要为所有元素添加一个类,您不需要for循环。试试这个:

$("*").addClass("style");

同样用于设置所有元素的内部html。试试这个:

$("*").html("Html here");

答案 3 :(得分:1)

试试这个:

$(empTwo).addClass("style")

注意:您使用的是字符串而不是变量:

答案 4 :(得分:0)

empTwo = "#" + temp;    //where empTwo is a string that equals "#iconLog"   
$("empTwo").addClass("style") //this does not work

你在第二行犯了错误。 变量empTwo已经是字符串格式。 所以你需要做的就是

$(empTwo).addClass("style") //this works because empTwo returns "#iconLog"