2016-07-06 144 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) 
} 

这肯定会工作。