我一直想知道这一点,并且不时出现它。
var name = document.title;
var user = document.getElementsByClassName("class-name")[0].children[j].getElementsByTagName("a")[0].innerHTML;
var someArr = [];
for (var j = 0; j < document.getElementsByClassName("class-name")[0].children.length; j++) {
if (user == name) {
someArr.push(user)
};
};
alert(someArr);
现在这一切都已经完成了(很明显),但是看看变量“user”是如何检查孩子的[j],如果我尝试使用这段代码,那么就会出现一个错误。无法读取未定义的属性'getElementsByTagName'。现在我的问题是:有没有办法让这段代码工作而不会给出错误信息而不执行。我会在if循环中将它用于干净的代码,就像所有变量一样。这不是“user”变量的唯一实例,因此它非常有用。
提前致谢,
丹尼尔。
答案 0 :(得分:0)
如果您在 j
循环之前使用,undefined
变量将具有for
值。
你可以将它放在一个函数闭包中,但是使用这样的变量并不能使代码在我看来是可读的。你可以做的是创建一个getUser()
函数,并缓存元素数组。像这样:
var name = document.title;
var getUser = function(elem) {
return elem.getElementsByTagName('a')[0].innerHTML;
};
var initialArr = document.getElementsByClassName("class-name")[0].children;
var someArr = [];
for (var j = 0; j < initialArr.length; j++) {
var user = getUser(initialArr[j]);
if (user == name) {
someArr.push(user)
};
};
alert(someArr);