我收到一个错误“TypeError:无法读取未定义的属性'样式' 如果你能帮我调试它,我会很高兴的:
var TWITTER = '"twitter"';
var FECEBOOK = '"facebook"';
var FACEBOOKicon = "https://s-static.ak.facebook.com/rsrc.php/yi/r/q9U99v3_saj.ico";
var TWITTERicon = "https://twitter.com/phoenix/favicon.ico";
var tweetlinks;
tweetlinks = document.querySelectorAll('[href*=' + TWITTER + ']');
var facelinks;
facelinks = document.querySelectorAll('[href*=' + FECEBOOK + ']');
function getLinks() {
for (var i = 0; i <= tweetlinks.length; i++) {
setBackground(tweetlinks[i], TWITTERicon);
}
for (var g = 0; i <= facelinks.length; g++) {
setBackground(facelinks[g], FACEBOOKicon);
}
function setBackground(elment, backimage) {
elment.style.backgroundImage = backimage;
}
}
getLinks();
答案 0 :(得分:2)
变化:
i <= tweetlinks.length
要:
i < tweetlinks.length
您的循环超出了数组,导致最后一次迭代中的未定义值。数组索引的范围从0到length - 1,而不是0到length。
答案 1 :(得分:2)
您的代码中存在各种错误。首先:你不想从0循环到&lt; =。length但是要&lt; 。长度。其次,在第二个循环中,您使用g作为计数器变量,但与i。
进行比较答案 2 :(得分:2)
代码中存在不匹配的循环变量。你应该写:
for (var g = 0; g < facelinks.length; g++) {
setBackground(facelinks[g], FACEBOOKicon);
}
而不是:
for (var g = 0; i <= facelinks.length; g++) {
setBackground(facelinks[g], FACEBOOKicon);
}
此外,length
循环中与for
的所有比较都应为strictly less than
(<
)而不是less than or equal to
(<=
) ,因为数组索引是从零开始的。
答案 3 :(得分:1)
Ates和Frederic都在代码中发布了问题。您需要同时看到两个代码才能正常工作:
var TWITTER = '"twitter"';
var FECEBOOK = '"facebook"';
var FACEBOOKicon = "https://s-static.ak.facebook.com/rsrc.php/yi/r/q9U99v3_saj.ico";
var TWITTERicon = "https://twitter.com/phoenix/favicon.ico";
var tweetlinks;
tweetlinks = document.querySelectorAll('[href*=' + TWITTER + ']');
var facelinks;
facelinks = document.querySelectorAll('[href*=' + FECEBOOK + ']');
function getLinks() {
for (var i = 0; i < tweetlinks.length; i++) {
setBackground(tweetlinks[i], TWITTERicon);
}
for (var g = 0; g < facelinks.length; g++) {
setBackground(facelinks[g], FACEBOOKicon);
}
function setBackground(elment, backimage) {
elment.style.backgroundImage = backimage;
}
}
getLinks();
使用i < arr.length
而不是i <= arr.length
的原因是因为数组索引为零,这意味着第一个元素位于索引0,即使我们将其称为 first 元素。如果我们有一个数组['a', 'b', 'c']
,它有三个元素,但第三个元素在索引2处。
答案 4 :(得分:0)
嗯,你有没有检查过你是真正获取变量: tweetlinks和facelinks?
在我看来,您正在设置“未定义”对象的“样式”属性。 也许你没有得到你在这些阵列中所期望的东西。
答案 5 :(得分:0)
有打字错误。而不是&#34; elment&#34;,它应该是&#34;元素&#34;。
答案 6 :(得分:-1)
在您的setBackground
函数中,elment
未定义或为null,或者没有任何内容。这可能是因为您通过for循环遍历索引。变化:
i <= facelinks.length
要:
i < facelinks.length