2014-01-18 2 views
0

JSLint выдает следующее сообщение об ошибке, что я не знаю, как решить:Тест на InnerText или TextContent внутри цикла

Ошибка: Не объявлять переменные в цикле.

Линия: var text = item.innerText || item.textContent

Мой вопрос в том, как я могу получить поддержку innerText или textContent и использовать правильный метод при циклировании элементов?

Вот мой пример. Я пишу класс элементов рядом с текстом. Я хотел бы иметь те же результаты, но проверить для innerText или textContent вне цикла for.

Fiddle: http://jsfiddle.net/PwwjK/

HTML:

<p class="test">1</p> 
<p class="test">2</p> 
<p class="test">3</p> 

JavaScript:

(function() { 
    'use strict'; 
    var list = $('.test'); 

    for (var i = 0, item; item = list[i]; i++) { 

    if (i === 1) { 
     //Add new class attribute. 
     item.className = item.className + ' hello'; 
    }; 

    var text = item.innerText || item.textContent 

    item.innerHTML = text + ' ' + item.className; 

    }; 

}()); 

ответ

2

Вы должны объявить var text вне для петли для этого теста, чтобы пройти.

(function() { 
    'use strict'; 
    var list = $('.test'), 
     text; // text is declared here. 

    for (var i = 0, item; item = list[i]; i++) { 
    if (i === 1) { 
     //Add new class attribute. 
     item.className = item.className + ' hello'; 
    }; 

    text = item.innerText || item.textContent 

    item.innerHTML = text + ' ' + item.className; 
    }; 
}()); 

Кроме того, здесь находчивая ссылка, которая может иметь ответ, почему JSLint просит вас объявить переменные на вершине: JSLint error: Move all 'var' declarations to the top of the function

+0

Спасибо! Я пытался использовать JSLint, чтобы помочь мне написать лучший JavaScript, и я думаю, что я просто застрял в ментальном блоке на этом. Еще раз спасибо! – Mdd

+0

Не беспокойтесь, пожалуйста! –

1

Объявите переменную вне цикла, и назначить его внутри цикла.

(function() { 
    'use strict'; 
    var list = $('.test'); 
    var text; 

    for (var i = 0, item; item = list[i]; i++) { 

    if (i === 1) { 
     //Add new class attribute. 
     item.className = item.className + ' hello'; 
    }; 

    text = item.innerText || item.textContent 

    item.innerHTML = text + ' ' + item.className; 

    }; 

}()); 
Смежные вопросы