如何修复JavaScript中的“无法读取null的属性'getElementsByClassName'”错误

时间:2019-03-23 09:09:18

标签: javascript html html5 dom

我正在尝试学习JavaScript。我有一个测试文件,但它给了我一个错误。 结果应为3个空div。

 LoginUser usr = null;

我尝试调试和更改item = template.getElementsByClassName(“ main”);到item = template.querySelectorAll(“#template div”);

HTML

var usr = new LoginUser(){ valid = false };

JavaScript

public class userInputReader<T> {

    private T userInput;

    public userInputReader()throws IOException
    {
        readUserInput();
    }


    private void readUserInput() throws IOException
    {
        BufferedReader userInputBReader = new BufferedReader(new InputStreamReader(System.in);
        if(userInput instanceof String)
        {
            userInput = userInputBReader.readLine();
        }
        else if(userInput instanceof Integer)
        {
            userInput = Integer.parseInt(userInputBReader.readLine());
        }
        else if(userInput instanceof BigDecimal)
        {
            userInput = new BigDecimal(userInputBReader.readLine());
        }

    }
}

1 个答案:

答案 0 :(得分:-1)

它不起作用的原因是导致您试图获取类名称为“ main”的3个元素。但是只有1个存在,这就是为什么它抱怨无法读取不存在的东西的属性。所以我更新了代码以获取3个空div

此外,最后一个div是站点div,您正在尝试向其中添加元素。您将遇到一个问题,尝试将自身添加到自身中。我已经稍微更新了代码,所以您不会遇到这个问题

var template, item, site, i, a;

template=document.getElementById("test");
item=template.querySelectorAll("#template div");

site=document.getElementsByClassName("site")[0];
for(i=0; i<item.length; i++){
  a=document.importNode(item, true);
  site.appendChild(a);
}