2013-05-15 3 views
0

Я сделал букмарклет, который должен выделять поле пароля и имени пользователя на веб-странице. Он находит окно с паролем и, кажется, находит текстовое поле, которое находится перед ним, но затем перестает работать. Вот не мой код:Закладка не найдена в поле ввода

<html> 
<head> 
</head> 
<body> 
<a href="javascript:var boxes= $(':text, :password');var selectionBox = $(':password'); selectionBox.css('background','red');for(var i = 0; i < boxes.length;i++){alert('loop');if(boxes[i] == selectionBox[0]){alert('Username box found');boxes[i-1].css('background','blue');alert('Success!');}}">Password box highlighter</a> 
</body> 

Я получаю окно предупреждения говоря «петлю» пару раз, а затем «Имя окна Found», но тогда он перестает работать на следующей строке, и нет «Успех!» оповещения. Кто-нибудь знает, что я делаю неправильно? Благодарю.

EDIT: Вот код распространено:

var boxes= $(':text, :password'); 
var selectionBox = $(':password'); 
selectionBox.css('background','red'); 
for(var i = 0; i < boxes.length;i++){ 
alert('loop'); 
if(boxes[i] == selectionBox[0]){ 
    alert('Username box found'); 
    boxes[i-1].css('background','blue'); 
    alert('Success!'); 
} 
} 
+0

Как вы думаете, мы должны отладить код, упакованный в одну линию, как это? –

+0

@ Riateche Извините, но это должно быть на одной строке, так как это букмарклет. –

+0

Можем ли мы некоторые HTML, вот скрипка с вашим текущим кодом js, гораздо проще читать по нескольким строкам: http://jsfiddle.net/tymeJV/JAb2f/ – tymeJV

ответ

2

Вы используете boxes[i-1] (который так же, как с помощью .get(i-1)), чтобы получить DOM элемент из коллекции JQuery. Попробуйте использовать .eq():

boxes.eq(i-1).css('background','blue'); 

DEMO:http://jsfiddle.net/HsDCs/3/

Если вы проверили консоль браузера, вы бы видели, что он жаловался, что css не свойство/метод для этого элемента.

Ссылки:

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