2016-07-06 100 views
0

我在我的音樂播放器(測試網站)上有一個小腳本,它應該允許用戶既可以取消選中(清除)所有複選框,也可以全選(全選)。該球員位於HERE。這是我的內部的JavaScript:JavaScript全選按鈕不起作用

<script> 
function uncheckAll() { 
    $("input[type='checkbox']:checked").prop("checked", false) 
} 

function checkAll() { 
    $("input[type='checkbox']:checked").prop("checked", true) 
} 
</script> 

我輸入:

<input type="button" onclick="uncheckAll()" value="Clear"/><input class="check" type="button" onclick="checkAll()" value="Select All"/> 

清除按鈕的功能良好。全選按鈕不起作用。

我想知道問題是我的內部Javascript還是可能與玩家的自然默認打開並檢查所有框的事實? (選擇全部按鈕的目的只是爲了在用戶決定聽到所有歌曲時將檢查返回到其自然位置,畢竟,而不是幾個選擇。我意識到用戶可以刷新頁面,但我認爲Select All按鈕更方便用戶使用

(播放器的JavaScript,ttw-music-player.js,它的位置鏈接位於頁面源頭標籤內。)處理複選框的部分是:

 markup = { 
      listItem:'<li class="track">' + 
         '<span class="title"></span>' + 
         '<span class="duration"></span>' + 
         '<span class="rating"></span>' + 
         '<a href="#" class="buy not-active" target="_blank"></a>' + 
         '<input class="cb" type="checkbox" checked="true">' + 
        '</li>', 
      ratingBar:'<span class="rating-level rating-bar"></span>' 
     }; 

    function playlistNext() { 
      $cbs = $(".cb"); 
      var index = current; 
      do { 
       index = (index + 1 < myPlaylist.length) ? index + 1 : 0; 
      } while (!$cbs.eq(index).prop("checked")); 
      playlistAdvance(index); 
     } 

任何人都可以幫助我確定爲什麼選擇全部(checkAll)函數不起作用,而清除(uncheckAll)函數呢?

+1

當調用checkAll()函數時,它無法在checked:true中找到DOM中的任何輸入。因此,像這樣運行它:function checkAll(){ $(「input [type ='checkbox']」)。prop(「checked」,true) –

回答

0

在您的線路的問題,我已經從你的checkAll下面複製()函數是你調出已經檢查過的複選框。

$("input[type='checkbox']:checked").prop("checked", true) 

只需卸下:檢查,它會照顧它:

$("input[type='checkbox']").prop("checked", true) 
+0

非常感謝;這整理它!也感謝思想者和Shikher Aatrey的貢獻;這些解決方案也是如此。 –

1

嘗試使用這樣的:

function uncheckAll() { 
    $("input:checkbox").prop("checked", false) 
} 

function checkAll() { 
    $("input:checkbox").prop("checked", true) 
} 

function uncheckAll() { 
 
    $("input:checkbox").prop("checked", false) 
 
} 
 

 
function checkAll() { 
 
    $("input:checkbox").prop("checked", true) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ol class="tracks"> 
 
    <li><input type="checkbox"></li> 
 
    <li><input type="checkbox"></li> 
 
    <li><input type="checkbox"></li> 
 
    <li><input type="checkbox"></li> 
 
    <li><input type="checkbox"></li> 
 
    <li><input type="checkbox"></li> 
 
</ol> 
 

 
<input type="button" onclick="uncheckAll()" value="Clear"/><input class="check" type="button" onclick="checkAll()" value="Select All"/>

希望它爲你工作:)

0

當複選框未被選擇,您正在設置checked: false。所以,當調用checkAll()函數時,它無法在DOM中找到任何輸入元素,其中checked: true

因此,修改代碼:

function checkAll() { 
    $("input[type='checkbox']").prop("checked", true) 
} 

這肯定會工作。