document.forms [i]代码在页面中工作,但在Greasemonkey中给出“未定义”错误

时间:2012-01-11 15:47:02

标签: javascript forms greasemonkey

所以有一个包含大约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 个答案:

答案 0 :(得分:2)

我找到了:"Pitfall #3: Named Forms and Form Elements"并想出来......

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++;
}