2013-07-22 43 views
2

我正在使用Greasemonkey將值插入文本框,但我無法讓我的生活得到它的工作。我右鍵單擊Firefox中的文本框並檢查元素。它顯示「輸入 #ExtensionExtnum .field_for_edit」將值插入到帶有Javascript的測試框中

document.getElementsByName("ExtensionExtnum").item(0).value = "test"; 
document.forms[0].submit(); 

和我回去:

/* 
Exception: document.getElementsByName("ExtensionExtnum").item(0) is null 
@Scratchpad:8 
*/ 

我已經得到這種代碼在其他網站合作,爲自動輸入用戶名和密碼。我不明白爲什麼它不會在這裏工作。

回答

0
var items = document.getElementsByName("ExtensionExtnum"); 
if(items.length > 0) 
    items[0].value = "test"; 
+0

我試過了。我不再得到 異常:document.getElementsByName(「ExtensionExtnum」)。item(0)爲空 錯誤,但它仍不會填充字段。我不知道這是否只是網站後端的東西。 – user2607110

+0

1.使用inspect元素查看名爲'ExtensionExtnum'的元素是否在html中呈現; 2.如果元素被渲染,那麼你不是在正確的時間調用這個方法。例如,當你的代碼執行dom沒有完全準備好時,把你的代碼放入'DOMContentLoaded'事件處理程序 – karaxuna

+0

但我在GreaseMonkey中運行這個 - 也就是說,我已經完全加載了頁面並單擊「Execute」,所以它應該在一切已經加載之後運行。我相當新的Javascript,所以請原諒我的無知:) – user2607110

0

input#ExtensionExtnum.field_for_editExtensionExtnum是元素ID,而不是其名稱。因此,你必須使用:

var elem = document.getElementById("ExtensionExtnum"); 
if (elem !== null) elem.value = "test"; 

如果你想設置field_for_edit類,使用的所有元素的值:

var elem = document.getElementsByClassName("field_for_edit"); 
for (var i = 0; i < elem.length; i++) 
{ 
    elem[i].value = "test"; 
} 
+0

我試過了。我不再得到 異常:document.getElementsByName(「ExtensionExtnum」)。item(0)爲空 錯誤,但它仍不會填充字段。我不知道這是否只是網站後端的東西。 – user2607110

0

檢查是否有這樣的第一個元素

if(document.getElementById("ExtensionExtnum") != undefined) 
    { 
     document.getElementById("ExtensionExtnum").value = "test"; 
    } 
+0

我試了一下。我不再得到異常:document.getElementsByName(「ExtensionExtnum」)。item(0)爲空錯誤,但它仍然不會填充該字段。我不知道這是否只是網站後端的東西。 – user2607110

相關問題