2013-10-28 47 views
0

我有一個顯示產品的列表。當我點擊一個,我需要更改<li>的類,以顯示它被點擊。我得到了這個工作......但我不能做的是清除其他<li>已被以前點擊,以表明它不再被選中。使用javascript更改html文檔中所有類的名稱

這是我的代碼的一部分,我做錯了什麼?順便說一句,我的邏輯在這裏首先刷新所有類未選中,然後用我的產品ID號更新列表。這可以在第二行代碼中看到。

我是JavaScript新手,做了我的研究,這就是我所得到的。

function showdetails(ProductID) {   
    document.getElementsByName("ProductList").className = "notselected"; 
    $("#"+ProductID).attr('class','selected'); 
+0

謝謝大家。我爲h2oooooo提供了正確的答案,因爲他/她是第一個回答,代碼完美無瑕。 – CogentP

回答

3

你想要做這個嗎?

function showdetails(ProductID) {  
    $("[name=ProductList].selected").removeClass('selected'); 
    $("#"+ProductID).addClass('selected'); 
} 
+0

這樣做肯定更好,當沒有'selected'類時告訴你相同的信息時,不需要用'notselected'類來複雜化。 – ajp15243

0

我認爲你需要跨越的document.getElementsByName("ProductList")所有返回的元素進行迭代,改變className每個元素獨立。

var productLists = document.getElementsByName('ProductList'); 
for (i = 0; i < productLists.length; i++) { 
    productLists[i].className = 'notselected' 
} 
+0

@Xander起初讓我絆倒了,但這是['.getElementsByName()'](https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByName),而不是' .getElementsByTagName()'。這個查詢'name'屬性。 – ajp15243

+0

我假設他們有滿足查詢的'''。 – lxe

相關問題