Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用敲除选择列中的所有复选框?_Javascript_Html_Knockout.js - Fatal编程技术网

Javascript 如何使用敲除选择列中的所有复选框?

Javascript 如何使用敲除选择列中的所有复选框?,javascript,html,knockout.js,Javascript,Html,Knockout.js,免责声明:我工作的环境必须完全内联。对JS文件的HTML调用我不允许编辑。也就是说,当我单击标题行时,我试图选择/取消选择列中的所有复选框。我希望能够像往常一样选择/取消选择标题下的任何一行,但当我检查标题时,我希望下面的每一行都选择/取消选择 现在我的问题是选择标题行只选择或取消选择一次。因此,单击它一次将取消选中每一行,但随后功能停止。值得一提的是,该复选框也不会出现在标题行中。但这是另一个问题 问题出在第一个表行-->标签类标记中。有什么建议吗 <tbody> <

免责声明:我工作的环境必须完全内联。对JS文件的HTML调用我不允许编辑。也就是说,当我单击标题行时,我试图选择/取消选择列中的所有复选框。我希望能够像往常一样选择/取消选择标题下的任何一行,但当我检查标题时,我希望下面的每一行都选择/取消选择

现在我的问题是选择标题行只选择或取消选择一次。因此,单击它一次将取消选中每一行,但随后功能停止。值得一提的是,该复选框也不会出现在标题行中。但这是另一个问题

问题出在第一个表行-->标签类标记中。有什么建议吗

<tbody>
    <tr>
        <td class="feature-name">All</td>
        <!-- ko foreach: $parent.featureHeadings[$index()] -->
        <td data-bind="css:{alt: !($index() % 2)}">
            <label class="multiple-checkboxes">
                <input type="checkbox" data-bind="checked: $parent.dataItems.every(function (acct) { 
                return !acct.features[$index()].isVisible() ||
                acct.features[$index()].value(); }), 
                click: function (data, index, model, event) 
                { 
                var newValue = event.srcElement.checked; 
                data.forEach(function (acct) { 
                if (acct.features[index].isVisible()) 
                    acct.features[index].value(newValue); 
                    }
                    ); 
                    }.bind($data, $parent.dataItems, $index())" />
            </label>
        </td>
        <!-- /ko -->
    </tr>
    <!--  ko foreach: dataItems -->
    <tr>
        <td class="feature-name" data-bind="text: name"></td>
        <!-- ko foreach: features -->
        <td class="setting" data-bind="highlightOverride: isOverridden(), css: { alt: !($index() % 2) }, highlightHelpHint: isHintActive">
        <!-- ko if: type === 'Boolean' -->
        <label class="checkbox" data-bind="css: { checked: value }, fadeVisible: isVisible()"><input type="checkbox" data-bind="checked: value" /></label>
        <!-- /ko -->
        </td>
        <!-- /ko -->
    </tr>
    <!-- /ko -->
</tbody>

全部的
编辑:谢谢大家的阅读。对不起,我不能提供更多的细节,让你来帮助我。这是最终的解决方案

<label class="multiple-checkboxes" data-bind="css: { checked: $parent.dataItems.every(function (acct) { return !acct.features[$index()].isVisible() || acct.features[$index()].value(); }) }, click: function (data, index, model, event) { var newValue = !event.srcElement.classList.contains('checked'); data.forEach(function (acct) { if (acct.features[index].isVisible()) acct.features[index].value(newValue); }); }.bind($data, $parent.dataItems, $index())">

这项工作:

<label class="multiple-checkboxes" data-bind="css: { checked: $parent.dataItems.every(function (acct) { return !acct.features[$index()].isVisible() || acct.features[$index()].value(); }) }, click: function (data, index, model, event) { var newValue = !event.srcElement.classList.contains('checked'); data.forEach(function (acct) { if (acct.features[index].isVisible()) acct.features[index].value(newValue); }); }.bind($data, $parent.dataItems, $index())">


我想把问题标记为已回答,但你可以看到我是新来的

您是否可以使用JSFIDLE创建一个示例代码和一个示例数据?可能是在工作之后。JSFIDLE在我的办公室是非法的-我认为你真正的问题是“你不允许更改javascript”。。。如果您可以将一个计算结果添加到viewmodel中,那么提出一个巨大的解决方案有什么意义呢。。。此外,您还可以使用“Stack snippet”功能创建一个工作示例。如果您有特殊的、特定的需求(您无法更改引导所有这些内容的javascript),那么您肯定需要制定一个解决方案,否则我们无法知道我们提出的解决方案是否可行。