2014-01-20 60 views
0

我怎樣才能改變內部動作=字符串「財產以後」我一直在使用更改HTML行動=「」使用JavaScript

document.getElementsByClassName 

嘗試,但它似乎並不改變任何東西。

我的HTML

...... 
......... 
<div class="my_button button" action='play_car'></div> 
..... 
...... 

我的JavaScript

document.getElementsByClassName('my_button').action = "play_boat"; 
....... 
...... 

我也試過 HTML

<div id="test" class="my_button button" action='play_car'></div> 

的Javascript

var a= document.getElementById('test'); 
    console.log(a); 

它只是返回null

回答

1

"get element-s by class name"返回一個集合,而不是單個元素。

Returns an array of all child elements which have any of the given class names. When called on the document object, the complete document is searched, including the root node.

假設有僅單個元件的返回,則:

var elementsWithClass = document.getElementsByClassName('my_button') 
elementsWithClass[0].action = "play_boat"; 

然而,可能更適合於使用循環 - 類名稱通常被設計成與多個使用元素和ID(以及getElementById)用於單數/唯一元素。

不幸的是,getElementsByClassNamenot supported,即使是最近的IE8瀏覽器。要處理這個問題,請使用跨瀏覽器庫(jQuery或您的首選項)或polyfill。

+0

感謝您的幫助!但我得到這個錯誤'TypeError:elementsWithClass [0]未定義' –

+0

@ user3159101然後沒有找到匹配的元素 - 而elementsWithClass.length是0(訪問未定義的數組索引返回undefined在JavaScript中)。確保在相關DOM可用後腳本運行*。 – user2864740

0

getElementsByClassName將返回所有元素的數組。如果您只想處理一個元素,請使用document.getElementById。舊版瀏覽器也不支持getElementsByClassName。如果這是一個問題,你可以使用jQuery來代替。

0

如果你有這個類的名字只有一個元素,就可以得到第一個項目:

document.getElementsByClassName('my_button')[0].action = "play_boat"; 

如果你有很多,在它們之間迭代:

for (var i in document.getElementsByClassName('my_button')) { 
    document.getElementsByClassName('my_button')[i].action = "play_boat"; 
} 

請檢查JavaScript代碼的位置在類「my_button」的元素之後。

+0

我有3個元素 –

+0

,所以你可以遍歷它們。 –

+0

我完全是我得到這個錯誤,當我嘗試你的代碼TypeError:document.getElementsByClassName(...)[0]是undefined –