你只需要得到所有你感興趣的元素的列表,那麼你就需要對他們執行一些動作。我添加了forEachNode函數,因爲querySelectorAll函數實際上並不返回一個數組 - 它返回一個nodeList,它的語法和功能與數組類似,但省略了forEach函數。
注意:如果複選框被選中,則檢查複選框。屬性的實際值沒有被使用 - 只是它的存在或缺乏而決定了檢查狀態。因此,你可以寫任何東西而不是0到checked屬性。
編輯:上面的說明是不正確的。在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>
爲什麼不改變上述碼?爲什麼使用JavaScript? – 2013-05-21 07:41:51
@NOX我將我的答案發布爲Java的JSP代碼。他似乎使用Java,因爲他使用'<%'標記,但將他的問題標記爲'JavaScript',並提議將其重新標記爲'Java',但他拒絕了。我不確定OP使用哪種語言,或者想用什麼語言來解決他的問題。這真的不清楚。 – DaGLiMiOuX
@DaGLiMiOuX他說:「我想獲得所有的輸入標籤,並將它們設置爲未選中狀態。」所以只需要刪除'if/else'塊,並從代碼中刪除'checked'屬性!我認爲這裏缺少一些東西。 – 2013-05-21 07:49:12