0

我一直在常规网页上使用它(并且它有效/有效),但是当我尝试附加 Jquery(v1.9.1 + jquery mobile v 1.2.0 - 用于按钮样式和其他功能)时,它似乎选择正确的对象(运行 console.log 以查看数组中被抓取的项目),但它不会更新页面中的复选框(使其选中),尽管返回值“true”。当我在这里做我的 jsFiddle 的基础知识时,它也会做同样的事情:http: //jsfiddle.net/artcase_1/6sasA/2/

function checkUncheck(name, setTo) {


    var c = document.getElementsByName(name);

    for (var i = 0; i < c.length; i++) {

        if (c[i].type == 'checkbox' || c[i].checked == 'false') {

            c[i].checked = setTo;
        }
    }
}

<!-- in the body: -->
<div data-role="fieldcontain">
    <fieldset data-role="controlgroup" data-type="horizontal">
        <legend>choose a level to view</legend>
        <input name="colors" type="checkbox" class="custom"
        id="redbtn" value="red" checked="checked" />
        <label for="redbtn">High</label>
        <input name="colors" type="checkbox" class="custom" id="yellowbtn"
        value="yellow" />
        <label for="yellowbtn">Med</label>
        <input name="colors" type="checkbox" class="custom" id="bluebtn"
        value="blue" />
        <label for="bluebtn">Low</label>
    </fieldset>
</div>
<input name="Show_all_btn" type="button" id="showall" onclick="checkUncheck('colors','true')"
value="check all" />
4

1 回答 1

1

我建议将您的 javascript 与您的 HTML 分开,这样您的更新后的 js 将是这样的:

var check_all = document.getElementById('showall');

function checkUncheck(name, setTo) {


var c = document.getElementsByName(name);

for (var i = 0; i < c.length; i++) {

    if (c[i].type == 'checkbox' || c[i].checked == 'false') {

        c[i].checked = setTo;
    }
}

}
check_all.addEventListener('click', checkUncheck.bind(null, 'colors', true), false);

这是一个演示小提琴

于 2013-03-11T19:05:16.893 回答