Javascript document.getElementById在document.write之后的现有元素上返回null
以下是完整的错误消息:Javascript document.getElementById在document.write之后的现有元素上返回null,javascript,html,dom,Javascript,Html,Dom,以下是完整的错误消息: mlg.html:41未捕获类型错误:无法将属性“innerHTML”设置为null 在ml(mlg.html:41) 在HTMLButtonElement.onclick上(mlg.html:9) 我在做一个疯狂的libs游戏,我只是做了一个快速的测试来发现bug,然后我偶然发现了这个问题。代码如下: 疯狂的Libs! 函数ml(){ var x=数学地板((数学随机()*10)+1); //疯狂解放1 如果(x==1 | | 2){ 文件。编写(“测试1”);
mlg.html:41未捕获类型错误:无法将属性“innerHTML”设置为null
在ml(mlg.html:41)
在HTMLButtonElement.onclick上(mlg.html:9)
我在做一个疯狂的libs游戏,我只是做了一个快速的测试来发现bug,然后我偶然发现了这个问题。代码如下:
疯狂的Libs!
函数ml(){
var x=数学地板((数学随机()*10)+1);
//疯狂解放1
如果(x==1 | | 2){
文件。编写(“测试1”);
}
//疯狂解放2
如果(x==3 | | 4){
文件。编写(“测试2”);
}
//疯狂解放3
如果(x==5 | | 6){
文件。编写(“测试3”);
}
//疯狂解放4
如果(x==7 | | 8){
文件。编写(“测试4”);
}
//疯狂解放5
如果(x==9 | | 10){
文件。编写(“测试5”);
}
document.getElementById(“display”).innerHTML=x;
}
不要使用它,它是安全的。它用test1
或一些类似的字符串覆盖整个页面。因此,当document.getElementById(“display”).innerHTML=x到达code>时,ID为display
的元素将不再存在,并且文档。getElementById(“display”)
将计算为null
如果要测试If
语句,请改用。只需打开(在大多数浏览器中为F12),您就会在那里看到消息
说到你的if
语句:if(test==1 | | 2)
将始终计算为true
,因为2
是真实的。那不是你想要的。您需要的是if(test==1 | | test==2)
备选方案:if([1,2].includes(test))
,if([1,2].indexOf(test)>=0)
()。问题是文档。write
覆盖整个页面的内容,因此当到达该语句时,不会有\display
元素。另外,x==1 | | 2
应该是x==1 | | x==2
。相关: