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

时间:2013-05-21 07:23:56

标签: javascript

我想编写一个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”。我想获取所有输入标记并将其设置为未选中。任何人都可以告诉我该怎么做。提前谢谢。

5 个答案:

答案 0 :(得分:2)

尝试:

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

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

答案 1 :(得分:1)

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

首先,您可以使用<% ... %>将元素打印到您的网页中(我将在答案中显示),这样您就不必将条件设置为<% ... %>,打印一个元素......等等都在同一个Java函数中。

其次,您可以访问Object媒体资源,而无需致电获取者。如果要将其值设置为特定字段,则根本不需要。 (即)<input type="text" name="clientName" value="${client.clientName}" />

以下是我对您提问的建议:

<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?只需添加您的元素,不要将其设置为已检查的属性。

<input name='view' type='checkbox' value="${priv.attributeId}">

答案 2 :(得分:1)

以下是您需要的功能,可随时调用:

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;
         }
    }
}

答案 3 :(得分:0)

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

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

编辑:上述说明不正确。 html中显示的'checked'属性和'checked'成员变量都控制状态。我已经更新了取消选中并检查功能。

<!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>

答案 4 :(得分:0)

这应该有效

var allInputs = document.getElementById("uncheckedByDefault").getElementsByTagName("input");
for (i = 0; i < allInputs.length; i++) {
    if (allInputs[i].getAttribute("type") == 'checkbox') {
        allInputs[i].removeAttribute("checked");
    }
}