我想我是javascript的初学者,正如标题所示,我的功能将无法完全执行。
function showBorder2(classid){
var first2 = document.getElementById("swordsmanIcon");
var second2 = document.getElementById("marksmanIcon");
var third2 = document.getElementById("scribeIcon");
first2.style.borderColor = "transparent";
second2.style.borderColor = "transparent";
third2.style.borderColor = "transparent";
classid.style.borderColor = "Aqua";
alert("1");
var classType = elementid.id;
alert("2");
window.classType = classType;
}
我已经进行了一些测试,我发现警报1触发,但警报2没有...这可能是一个简单的错误,但我真的看不到它。
提前致谢!
答案 0 :(得分:0)
如果alert1正在触发而不是alert2,则问题必须是elementid
未定义,并且尝试访问未定义变量的属性将引发错误并中断js的执行。解决方案:
a)确保定义elementid
b)如果您不能保证elementid
的定义,请在尝试访问子属性之前添加一个检查以查看它是否已定义。
简单的简写是var classType = elementid && elementid.id;
^这样的事情很简短:
var classType;
if(elementid) {
classType = elementid.id;
}
答案 1 :(得分:0)
您的元素变量之一(first2,second2,third2,classid)可能为null或未定义。在使用变量之前检查null或undefined是很好的防御性编程(特别是在javascript中)。
我猜测当调用showBorder2函数时,参数传递给“classid”要么不是有效元素,要么没有传递给它。