[英]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.