由于某种原因,我的Javascript代码不起作用。但是,当我删除一些Javascript行时,它可以正常工作。
我做错了什么?
HTML:
<span id="21" class="addon-price">€ 0,00 p.m.</span>
<span id="57" class="addon-price">€ 0,00 p.m.</span>
Javascript:
document.getElementById("17").innerHTML = "Gratis";
document.getElementById("18").innerHTML = "Gratis";
document.getElementById("19").innerHTML = "Gratis";
document.getElementById("20").innerHTML = "Gratis";
document.getElementById("21").innerHTML = "Gratis";
document.getElementById("47").innerHTML = "Gratis";
document.getElementById("52").innerHTML = "Gratis";
document.getElementById("57").innerHTML = "Gratis";
document.getElementById("62").innerHTML = "Gratis";
JSFiddle:https://jsfiddle.net/4e362pg3/5/
发布于 2016-08-16 07:26:13
JavaScript代码很好。您正在获得异常,因为您正在尝试设置不存在的标记的innerHTML
。根据您的代码,唯一成功的两种方法是尝试设置57和21的跨度标记。在所有其他情况下,JavaScript抛出一个异常并停止执行。
要修复它,只需将每个集合包装在一个条件中,以便在尝试设置值之前查看元素是否存在。
if(document.getElementById("17")) {
document.getElementById("17").innerHTML = "Gratis";
}
下面是一个包含条件中的几个元素的示例。
发布于 2016-08-16 07:26:46
打开你的控制台。
Uncaught :无法设置属性'innerHTML‘为null
如果DOM中不存在元素,则选择器将返回null
。没有定义null.innerHTML
,它会抛出一个错误并使页面崩溃。
使用jQuery解决方案(因为您在问题中使用了jQuery标记):
$("#17").html("Gratis);
即使"17“元素不存在,这也不会使页面崩溃。
https://stackoverflow.com/questions/38978759
复制相似问题