код document.forms [i] работает на странице, но выдает «неопределенную» ошибку в Greasemonkey - PullRequest
1 голос
/ 11 января 2012

Итак, есть страница с примерно 50 формами.

Первая форма - это поиск, поэтому я пропускаю эту форму.

Остальные 49, я забочусь.

Из этих 49 я только ищу формы со значением go, равным обновить.

Я написал код в блокноте, и он отлично работает.

Я вставил его в Greasemonkeyи я получаю "document.forms[i].go is undefined"

Вот мой код:

var i=1 ;
var total = document.forms.length -1;
while (i<=total) {

    var go_val = document.forms[i].go.value;
    if(go_val == "renew"){
        document.forms[i].setAttribute('target','_blank');
    }

    i++;
}

Я также пробовал это, чтобы проверить, существует ли элемент go и форма не генерирует ошибок, но не запускаетсяsetattribute.

var i=0 ;
var total = document.forms.length -1;
while (i<=total) {
    if(document.forms[i].go){
    var go_val = document.forms[i].go.value;
    if(go_val == "renew"){
        document.forms[i].setAttribute('target','_blank');
    }
    }
    i++;
}

Почему он работает в блокноте, а не в Greasemonkey?

1 Ответ

2 голосов
/ 12 января 2012

Я нашел: "Подводный камень # 3: Именованные формы и элементы форм" и понял это ...

var i=0;
var total = document.forms.length -1;
while (i<=total) {
    var form = document.forms[i];
    if(form.elements.namedItem("go")){
        var input = form.elements.namedItem("go");
        var go_val = input.value;

        if(go_val == "renew"){
            document.forms[i].setAttribute('target','_blank');
        }
    }
    i++;
}
...