[英]Javascript and only one Checkbox - undefined
for (i = 0; i < document.checks.user.length; i++) //for all check boxes
{
if (document.checks.user[i].checked == true )
{
document.checks.submit();
return 0;
}
}
<body>
<form action="" method=POST name="checks" ID="Form2">
I have a bike:
<input type="checkbox" name="user" value="Bike" ID="Checkbox1">
<br>
<br>
</form>
<input type="button" value="Delete"
class="btn" onclick="sub_delete()"
onmouseover="hov(this, 'btn btnhov')" onmouseout="hov(this, 'btn')"
id="Button1" name="Button1"
/>
</body>
你可能已經知道什么時候只有一個復選框,document.checks.user.length = undefined。 什么是最有效的方法,以確保當只有一個復選框時,它將被刪除。 我在考慮將其添加為if語句之前的單獨if語句.....任何suggesstions。
謝謝。
使用循環控制變量,如果未定義長度,則將其設置為1 ...
var len = document.checks.user.length;
if(len == undefined) len = 1;
for (i = 0; i < len; i++) //for all check boxes
最好的祝福...
if (document.getElementById('Checkbox1').checked) { /* do something */ }
如果你想循環一堆復選框,你可以循環表單的輸入字段,如:
var formNodes = document.checks.getElementsByTagName('input');
for (var i=0;i<formNodes.length;i++) {
/* do something with the name/value/id or checked-state of formNodes[i] */
}
這很簡單,只需創建一個隱藏的輸入標記,其名稱與現有的復選框輸入標記相同。
例如:
<input type="checkbox" name="user" value="Bike" ID="Checkbox1">
<input type="hidden" name="user" value=""/>
你的問題有點令人困惑,因為你的javascript顯然必須在一個名為'sub_delete'的函數中才能使用......有強大力量來編輯問題的人可能會通過更清楚地改善這個問題...
因此,您必須解決的第一個問題是,對於具有給定名稱“user”的單個復選框,它不是數組,因此沒有定義的長度,但是如果您嘗試將其作為數組訪問它也是如此。事情變得困惑..你的javascript函數的完全重寫可能如下所示:
function sub_delete{
if (typeof document.checks.user.length === 'undefined') {
/*then there is just one checkbox with the name 'user' no array*/
if (document.checks.user.checked == true )
{
document.checks.submit();
return 0;
}
}else{
/*then there is several checkboxs with the name 'user' making an array*/
for(var i = 0, max = document.checks.user.length; i < max; i++){
if (document.checks.user[i].checked == true )
{
document.checks.submit();
return 0;
}
}
}
}//sub_delete end
HTH,-FT
我也面臨同樣的問題,共有5個復選框,其中4個被禁用,1個被啟用。 現在checkboxId.length是未定義的,所以我能想到的唯一選擇是if(checkboxId.length == undefined){checkboxId.checked = true&submith the form}。
if(document.checks.user[0]) {
//it's an array
}
else {
//it's a single element
}
jQuery是你的朋友:
$("input[type='checkbox']").attr('checked', false);
(...如果jQuery可供你使用?)
我可能會遍歷document.checks.elements,尋找.type =='checkbox'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.