在具有多个id的目标页面上,脚本仅在第一个脚本上起作用

时间:2014-05-19 07:14:21

标签: javascript html greasemonkey malformed

我正在使用Greasemonkey填写文本框。它有效,但页面中有多个<input>具有相同的ID,而GM只填充第一个。

页面的HTML(重复3次):

<input type="text" id="se" value="" class="form">


我的GM代码:

document.getElementById("se").value = "na";


如何设置第二个或第三个<input>呢?

2 个答案:

答案 0 :(得分:2)

是的,HTML格式错误的网页是一个正确的痛苦。幸运的是,querySelectorAll()通常可以像人们希望的那样在这些页面上运行。 (唉,图书馆,甚至是jQuery,通常也不会处理格式错误的页面。)

在这种情况下,以下代码应该适合您:

var badInputs = document.querySelectorAll ("#se");

for (var J = badInputs.length - 1;  J >= 0;  --J) {
    var tInput      = badInputs[J];
    tInput.value    = "na";
}


你可以see the code in action at jsFiddle

答案 1 :(得分:0)

您可以迭代页面上的input元素,查找特定的id值:

var elements = document.getElementsByTagName('input');

for(var i = 0; i < elements.length; i++)
{
    if(elements[i].id === "se")
    {
        elements[i].value = "na";
    }
}

fiddle