2012-03-26 5 views
1

я получаю ошибку «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

Я не могу перебирать 'tweetlinks' и' facelinks', даже если они не пустые ... – user1294129

+2

У вас есть опечатка: elment -> element (но это не является источником каких-либо проблем).И у вас есть еще одна опечатка: FECEBOOK -> FACEBOOK (я бы не хотел читать эту книгу!) –

+0

Возможно, «элит» должен быть реальным переменным «элементом»? – theJollySin

ответ

1

Атекс и Фредерик опубликовали проблемы в коде. Вы должны видеть, чтобы и для вашего кода для работы:

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, хотя мы назовите его сначала элемент. Если у нас есть массив ['a', 'b', 'c'], он имеет три элемента, но третий элемент находится в индексе 2.

2

Изменение:

i <= tweetlinks.length 

To:

i < tweetlinks.length 

Ваши петли выходя за пределы массивов, в результате неопределенная значение в последних итерациях. Индексы массива варьируются от 0 до длины - 1, а не от 0 до длины.

-1

Похоже, что в вашей функции setBackground, elment не определено или ничто иное, как говорится. Это может быть связано с тем, что вы переходите через индекс через цикл for. Изменение:

i <= facelinks.length 

To:

i < facelinks.length 
2

Существуют различные ошибки в коде. Во-первых: вы не хотите зацикливаться от 0 до < = .length, но до < .length. Во-вторых, во втором цикле вы используете g в качестве счетной переменной, но сравниваете с i.

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 (<=), так как индексы массива равны нулю -исходя из.

0

Ну, вы проверили, что это такое действительно Получение в переменных: tweetlinks и facelinks?

Мне кажется, что вы устанавливаете свойство «style» объекта «undefined». Возможно, вы не получаете то, что ожидаете в этих массивах.

0

Ошибка при печати. вместо «elment» он должен быть «элементом».

+0

Это должен быть комментарий –

Смежные вопросы