2014-10-01 85 views
0

我想用getElementsByTagName得到一個提交按鈕,但我必須做錯了什麼。如何檢索與getElementsByTagName提交按鈕

​​ 在上面的HTML代碼段

,如果我使用下面的函數,獲得按鈕工作尚未得到提交按鈕不會。

window.onload = theFunction; 

function theFunction(){ 

document.getElementsByTagName("BUTTON")[0].setAttribute("onclick", "theOtherFunction()"); 

document.getElementsByTagName("INPUT")[3];.setAttribute("onclick", "theOtherFunction()"); 

} 

我在做什麼錯?

function theOtherFunction(){ 

    document.getElementById("ptag").style.color = "blue"; 

} 

我加theOtherFunction()我的問題,因爲我所有的小實驗正在做的是改變這種<p>顏色爲藍色。按鈕,它保持藍色。使用提交按鈕,它會很快變成藍色,然後回到黑色。有什麼區別,我如何使用提交按鈕來保留更改?

+4

聲明中有一個雜散分號。 **總是**打開開發者控制檯,查看瀏覽器報告的錯誤! – Pointy 2014-10-01 23:45:01

回答

2

看一看的代碼的最後一行document.getElementsByTagName("INPUT")[3];.setAttribute("onclick", "theOtherFunction()");

有一個;在[3]之後你不需要那裏。 希望這有助於。

1

的jQuery變得非常有用這裏

$('input[type="submit"]') 

這將讓你做出免疫力HTML變化和支持舊版本瀏覽器仍然有1%的使用率。

你的第二個例子應該沒​​有;在線的中間。然而並非所有瀏覽器都支持getElementsByTagName。

更新使用沒有現成的庫。

如果你是一個自己建造的人,誰想要自己解放。

function getElementsByAttrib(attrib) { 
    return document.querySelectorAll('[' + attrib + ']'); 
} 
var elements = getElementsByAttrib('type="submit"'); 
MySubmit = elements[0]'; 
+0

爲此加載一個巨大且不必要的庫會產生反效果 – PeeHaa 2014-10-02 00:19:12

+0

@PeeHaa需要花點時間,但通常jQuery可以派上用場,完成比dom遍歷的更多特性。 – Wayne 2014-10-02 00:26:02

+0

我真的很喜歡這個,爲了我所做的,JQuery並不是很理想。 – WeVie 2014-10-02 00:32:24

0

使用getElementsByTagName來定位/檢索特定的輸入元素是不現實的。

我們得使用正確的工具,合適的工作,在這種情況下,它的查詢選擇這樣的...

var S=document.querySelectorAll('input[type=submit]'); 

S[0].style.background='red'; // do something to the first button 

注:以上代碼假設你只有一個提交按鈕或你有循環訪問數組「S」以定位所有提交按鈕。