Javascript 获取输入标记并将其设置为未选中

Javascript 获取输入标记并将其设置为未选中,javascript,Javascript,我想编写一个java脚本函数,它将从td中获取类型为“checkbox”的输入标记,并将其标记为未选中。以下是jsp代码: <td id="uncheckedByDefault" align=center class=listTypeOne> <% if (priv.getViewPrivilege() == 1) { %> <input name="view" type="checkbox" value='<%= priv.getAttrib

我想编写一个java脚本函数,它将从td中获取类型为“checkbox”的输入标记,并将其标记为未选中。以下是jsp代码:

<td id="uncheckedByDefault" align=center class=listTypeOne>
    <% if (priv.getViewPrivilege() == 1) { %>
    <input name="view" type="checkbox" value='<%= priv.getAttributeId() %>' checked>                     
    <% } else { %>
    <input name="view" type="checkbox" value='<%= priv.getAttributeId()%>'>
    <% } %>
</td>


现在,td具有id=“uncheckedByDefault”。我想获取所有输入标记并将其设置为未选中。谁能告诉我怎么做。提前谢谢。

我不知道我是否理解你的问题,但我会试试看

首先,您可以使用
将元素打印到您的网页中(我将在我的回答中说明如何打印),因此您不必在
中设置条件,打印元素。。。等等。都在同一个Java函数中

其次,您可以访问
对象
属性,而无需调用getter。如果要将其值设置到特定字段中,则根本不需要。(即)

以下是我对你的问题的建议:

<td id="uncheckedByDefault" align=center class=listTypeOne>
    <%
        if (priv.getViewPrivilege() == 1) {
            out.println("<input name='view' type='checkbox' + 
            value=" + priv.getAttributeId() + " checked = 'checked'>");
        } else {
            out.println("<input name='view' type='checkbox' + 
            value=" + priv.getAttributeId() + ">");
        }
    %>
</td>

报告它是否有效或不是你想要的

更新

如果您想让它们全部取消选中,因为您的元素
id
属性表明了这一点。为什么要检查对象属性以将其设置为选中或不选中?只需添加元素,不要将其设置为checked属性


我不知道我是否理解你的问题,但我会试试看

首先,您可以使用
将元素打印到您的网页中(我将在我的回答中说明如何打印),因此您不必在
中设置条件,打印元素。。。等等。都在同一个Java函数中

其次,您可以访问
对象
属性,而无需调用getter。如果要将其值设置到特定字段中,则根本不需要。(即)

以下是我对你的问题的建议:

<td id="uncheckedByDefault" align=center class=listTypeOne>
    <%
        if (priv.getViewPrivilege() == 1) {
            out.println("<input name='view' type='checkbox' + 
            value=" + priv.getAttributeId() + " checked = 'checked'>");
        } else {
            out.println("<input name='view' type='checkbox' + 
            value=" + priv.getAttributeId() + ">");
        }
    %>
</td>

报告它是否有效或不是你想要的

更新

如果您想让它们全部取消选中,因为您的元素
id
属性表明了这一点。为什么要检查对象属性以将其设置为选中或不选中?只需添加元素,不要将其设置为checked属性


您只需获得感兴趣的所有元素的列表,然后需要对它们执行一些操作。我添加了forEachNode函数,因为querySelectorAll函数实际上并不返回数组——它返回一个节点列表,该节点列表的语法和功能与数组类似,但省略了forEach函数

注意:如果选中了属性,则选中复选框。属性的实际值没有被使用——只是它的存在或缺乏决定了检查状态。因此,您可以向checked属性写入任何内容,而不是0

编辑:以上注释不正确。html中可见的“checked”属性和“checked”成员变量都控制状态。我已经更新了uncheck和check函数

<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}

window.addEventListener('load', mInit, false);

function mInit()
{
}

/*
     func to be called takes 3 variables. currentElement, currentIndex, nodeList the element belongs to.
*/
function forEachNode(nodeList, func)
{
    var i, n = nodeList.length;
    for (i=0; i<n; i++)
    {
        func(nodeList[i], i, nodeList);
    }
}
/*
function uncheck(elem)
{
    elem.removeAttribute('checked');
}

function check(elem)
{
    elem.setAttribute('checked',0);
}
*/

function uncheck(elem)
{
    elem.checked = false;
    elem.removeAttribute('checked');
}

function check(elem)
{
    elem.checked = true;
    elem.setAttribute('checked',0);
}



function checkAll()
{
    var checkBoxElements = document.querySelectorAll('input[type=checkbox]');
    forEachNode(checkBoxElements, check);
}

function uncheckAll()
{
    var checkBoxElements = document.querySelectorAll('input[type=checkbox]');
    forEachNode(checkBoxElements, uncheck);
}

</script>
<style>
</style>
</head>
<body>
    <button onclick='uncheckAll()'>Uncheck all</button>
    <button onclick='checkAll()'>Check all</button>
    <br>
    <input type='checkbox'/>CB 1
    <br>
    <input type='checkbox'/>CB 2
    <br>
    <input type='checkbox'/>CB 3
    <br>
    <input type='checkbox'/>CB 4
    <br>
    <input type='checkbox'/>CB 5
    <br>
</body>
</html>

函数byId(e){returndocument.getElementById(e);}
window.addEventListener('load',mInit,false);
函数mInit()
{
}
/*
要调用的func接受3个变量。currentElement、currentIndex、nodeList元素所属的列表。
*/
函数forEachNode(节点列表,func)
{
变量i,n=节点列表长度;

对于(i=0;i您只需要获得感兴趣的所有元素的列表,然后需要对它们执行一些操作。我添加了forEachNode函数,因为querySelectorAll函数实际上并不返回数组-它返回一个节点列表,该节点列表的语法和功能与数组类似,但省略了forEach函数。

注意:如果复选框的属性已选中,则会选中该复选框。未使用该属性的实际值-只是它的存在或缺乏决定了检查状态。因此,您可以向选中的属性写入任何内容,而不是0

编辑:上面的注释不正确。html中可见的“checked”属性和“checked”成员变量都控制状态。我已经更新了uncheck和check函数

<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}

window.addEventListener('load', mInit, false);

function mInit()
{
}

/*
     func to be called takes 3 variables. currentElement, currentIndex, nodeList the element belongs to.
*/
function forEachNode(nodeList, func)
{
    var i, n = nodeList.length;
    for (i=0; i<n; i++)
    {
        func(nodeList[i], i, nodeList);
    }
}
/*
function uncheck(elem)
{
    elem.removeAttribute('checked');
}

function check(elem)
{
    elem.setAttribute('checked',0);
}
*/

function uncheck(elem)
{
    elem.checked = false;
    elem.removeAttribute('checked');
}

function check(elem)
{
    elem.checked = true;
    elem.setAttribute('checked',0);
}



function checkAll()
{
    var checkBoxElements = document.querySelectorAll('input[type=checkbox]');
    forEachNode(checkBoxElements, check);
}

function uncheckAll()
{
    var checkBoxElements = document.querySelectorAll('input[type=checkbox]');
    forEachNode(checkBoxElements, uncheck);
}

</script>
<style>
</style>
</head>
<body>
    <button onclick='uncheckAll()'>Uncheck all</button>
    <button onclick='checkAll()'>Check all</button>
    <br>
    <input type='checkbox'/>CB 1
    <br>
    <input type='checkbox'/>CB 2
    <br>
    <input type='checkbox'/>CB 3
    <br>
    <input type='checkbox'/>CB 4
    <br>
    <input type='checkbox'/>CB 5
    <br>
</body>
</html>

函数byId(e){returndocument.getElementById(e);}
window.addEventListener('load',mInit,false);
函数mInit()
{
}
/*
要调用的func包含3个变量。元素所属的currentElement、currentIndex、nodeList。
*/
函数forEachNode(节点列表,func)
{
变量i,n=节点列表长度;
对于(i=0;i这应该有效

var allInputs = document.getElementById("uncheckedByDefault").getElementsByTagName("input");
for (i = 0; i < allInputs.length; i++) {
    if (allInputs[i].getAttribute("type") == 'checkbox') {
        allInputs[i].removeAttribute("checked");
    }
}
var allInputs=document.getElementById(“uncheckedByDefault”).getElementsByTagName(“input”);
对于(i=0;i
这应该行得通

var allInputs = document.getElementById("uncheckedByDefault").getElementsByTagName("input");
for (i = 0; i < allInputs.length; i++) {
    if (allInputs[i].getAttribute("type") == 'checkbox') {
        allInputs[i].removeAttribute("checked");
    }
}
var allInputs=document.getElementById(“uncheckedByDefault”).getElementsByTagName(“input”);
对于(i=0;i
这是您需要的函数,可以随时调用:

function uncheckAll(){
    var inputsContainer = document.getElementById('uncheckedByDefault');
    var allInputs = inputsContainer.getElementsByTagName('input');
    var len = allInputs.length;
    for(var i=0; i<len; i++){
         if(allInputs[i].type == 'checkbox'){
         allInputs[i].checked = false;
         }
    }
}
函数uncheckAll(){
var inputsContainer=document.getElementById('uncheckedByDefault');
var allInputs=inputsContainer.getElementsByTagName('input');
var len=所有输入长度;

对于(var i=0;i这是您需要的函数,可以随时调用它:

function uncheckAll(){
    var inputsContainer = document.getElementById('uncheckedByDefault');
    var allInputs = inputsContainer.getElementsByTagName('input');
    var len = allInputs.length;
    for(var i=0; i<len; i++){
         if(allInputs[i].type == 'checkbox'){
         allInputs[i].checked = false;
         }
    }
}
函数uncheckAll(){
var inputsContainer=document.getElementById('uncheckedByDefault');
var allInputs=inputsContainer.getElementsByTagName('input');
var len=所有输入长度;
对于(var i=0;i尝试:

inputs = document.getElementById('uncheckedByDefault').getElementsByTagName('input');

    for (index = 0; index < inputs.length; ++index) {
        // deal with inputs[index] element.
       inputs[index].checked=false;
    }
inputs=document.getElementById('uncheckedByDefault').getElementsByTagName('input');
用于(索引=0;索引
试试:

inputs = document.getElementById('uncheckedByDefault').getElementsByTagName('input');

    for (index = 0; index < inputs.length; ++index) {
        // deal with inputs[index] element.
       inputs[index].checked=false;
    }
inputs=document.getElementById('unc