2012-07-20 82 views
0

我用這個代碼從一個輸入框獲取值:javascript,如何從類的輸入中獲取價值?

var suggest_type = document.getElementById('ac-type').value; 

現在我需要應用在其他幾頁我的js代碼。我聽說在一個網站上重複一個ID並不好。所以,我想改變使用類如下:

var suggest_type = document.getElementByClass('ac-type').value; 

這沒有得到的價值。我如何使用課堂來獲得價值?

+1

此副本 - http://stackoverflow.com/questions/3808808/how-to-get-element-by-class-in-javascript – 2012-07-20 13:48:12

+1

'getElementByClass'不存在。 – 2012-07-20 13:51:50

+0

'getElementByClass'不存在,這個想法在語義上是錯誤的,因爲可以有更多的元素具有相同的類。 – Imp 2012-07-20 13:55:13

回答

1

你應該堅持使用ID的 - 他們只需要在頁面中是唯一的。

如果必須使用類,你需要使用getElementsByClassName()

var elems = document.getElementsByClassName('ac-type'); 
var value = elems[0].value; 

但是這個功能不能很好地支持在舊的瀏覽器,這是另一個很好的理由,堅持使用的ID。

+0

的結果我很困惑,這與我的回答有何不同,因爲我的回答已經收到了2個投票結果? :/ – 2012-07-20 13:53:00

+0

這沒有什麼不同,只是我展示瞭如果你真的需要的話,你應該怎麼做。順便說一句,我確實讓你高興。 – Alnitak 2012-07-20 13:53:47

+0

雖然我同意,但我的觀點是完全有效的,並且需要通過課堂選擇不必要的。 – 2012-07-20 13:55:27

1

它絕對是好的重複整個網站ids不只是一個單一的HTML文件。

ID在一個html頁面中應該是唯一的。

+4

關心與downvotes闡述?或者你有沒有打擾到正確閱讀我的答案? – 2012-07-20 13:50:28

+0

我upvoted你的,但收到我的三個downvotes,可能是因爲不使用不存在的getElementByClass函數? – adeneo 2012-07-20 14:01:24

+0

也許投票結果會讓一些偷窺者感覺到對別人有點權力。 – Jenny 2012-07-20 14:05:44

0

嘗試使用這樣的:

var elements = document.getElementsByClassName('ac-type'); // this is an array containing all matched elements 
+0

請注意,不是'getElementByClass',我已經使用'getElementsByClassName' – haynar 2012-07-20 13:51:21

+1

不僅是'getElementsByClassName',請注意* Name *,但它在舊版IE中也不起作用。 – Imp 2012-07-20 13:53:09

+0

當然是的,這是複製粘貼:) – haynar 2012-07-20 13:54:37

1

它實際上是:

var suggest_type = document.getElementsByClassName('ac-type')[0].value; 

但我與喬恩·泰勒同意,ID的可以是網站中的一樣,只要他們不重複在同一頁。

-1

使用jQuery只需使用 -

$('.ac-type').val(); 

你會得到價值。

+2

爲什麼使用jQuery而不使用Prototype.js或Mootools或Dojo或YUI或...? (這是一個反問的問題......如果問題不是關於某個圖書館,不建議使用一個圖書館,除非它確實是非常必要的,或者你也提供了一個替代的無庫解決方案)。 – 2012-07-20 13:53:42