javascript 中的输出对象值

Output object values in javascript

我有一个 ObjectHtmlInputElement:

for($array as $a){
  echo '<input type="checkbox" name="check[]" value="'.$a.'">';
}

Javascript:

function myForm(){
 var theForm=document.getElementById("myCheck");
 var a = theForm.elements['check[]'];

 for( var i=0; i<a.length; i++){
            if(a[i].checked){
             alert( a[i].value );
             return true;
            }
  }
}

此脚本检查是否至少选中了一个复选框,然后 return 为真(也可以选中更多复选框)。我需要的是在 alert() 中输出,每个已选中的复选框(通过 'a[i].checked')的每个对象值。 a[i].value ,只输出第一个值,所以我需要别的东西。

根据 'dec' 和 'vijay' 的回答我设法找到了解决方案:

var checkedCheckboxes="";
for( var i=0; i<a.length; i++){
        if(a[i].checked){
        checkedCheckboxes += a[i].value;
        }
    }
for( var i=0; i<a.length; i++){
            if(a[i].checked){
            alert('Checked: ' + checkedCheckboxes);
            return true;
            }
}

确实循环停止了,因为 return true as dec said.And 解决方案是进行另一个循环,并将所有值插入变量中以便我可以使用它在警报中。

使用 jquery 你可以做到:

function isThereAtLeastOneCheckActive() {
    var res = false
    $(':checkbox').each(function() {
        if (this.checked) { 
            res = true
            alert(this.val()) 
            // .text() can also be used
        }
    })
    return res
}

刚开始的时候,您可能会觉得缺少 ; 很奇怪 在 js 中不需要它们:https://mislav.net/2010/05/semicolons/

试试这个:

function myForm() {
    var theForm = document.getElementById("myCheck");
    var a = theForm.elements['check[]'];
    var checkedCheckboxes = "";
    for (var i = 0; i < a.length; i++) {
        if (a[i].checked) {
            checkedCheckboxes += a[i].value + ", ";
        }
    }
    if (checkedCheckboxes.length > 0) alert(checkedCheckboxes);
    return checkedCheckboxes.length > 0;
}

http://jsfiddle.net/p5upLprk/1/

第一个值似乎匹配 a[i].checked 然后你 return 并且没有测试其他元素。所以删除 return true.