[英]object is undefined, don't know why
我收到一个错误“ TypeError:无法读取未定义的属性'style'”,如果您可以帮助我调试它,我将非常高兴:
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();
更改:
i <= tweetlinks.length
至:
i < tweetlinks.length
您的循环超出了数组的范围,从而在最后一次迭代中产生了未定义的值。 数组索引的范围是0到长度-1,而不是0到长度。
您的代码中存在各种错误。 首先:您不想从0循环到<= .length,而是循环到<.length。 其次,在第二个循环中,将g用作计数器变量,但与i进行比较。
您的代码中有不匹配的循环变量。 您应该写:
for (var g = 0; g < facelinks.length; g++) {
setBackground(facelinks[g], FACEBOOKicon);
}
代替:
for (var g = 0; i <= facelinks.length; g++) {
setBackground(facelinks[g], FACEBOOKicon);
}
此外,因为数组索引是从零开始的,所以所有for
循环中对length
的比较都应strictly less than
( <
)而不是less than or equal to
( <=
)。
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();
element. 使用i < arr.length
而不是i <= arr.length
的原因是因为数组索引为零,这意味着第一个元素的索引为0,即使我们将其称为元素也是如此。 element is at index 2. 如果我们有一个数组['a', 'b', 'c']
,则它具有三个元素,但是元素在索引2处。
出现打字错误。 而不是“元素”,应该是“元素”。
好吧,您是否检查了变量的真正含义:tweetlink和facelink?
在我看来,您正在设置“未定义”对象的“样式”属性。 也许您没有得到这些数组中的期望。
看起来在您的setBackground
函数中, elment
是未定义的或为null或如他们所说的没有。 这可能是因为您要通过for循环遍历索引。 更改:
i <= facelinks.length
至:
i < facelinks.length
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.