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

这个脚本检查是否至少选中了一个复选框,然后返回true(也可以有更多的复选框被选中)。我需要的是在alert()中输出,每个被选中的复选框(每个通过'a[i].checked'的对象值).a[i].value,只输出第一个值,所以我需要其他东西。

根据"dec"answers"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;
            }
}

事实上,正如dec所说,由于返回true,循环停止了。解决方案是制作另一个循环,并将所有值插入一个变量中,这样我就可以在警报中使用它

第一个值似乎与a[i].checked匹配,然后返回,没有测试其他元素。因此,删除return true

试试这个:

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/

使用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/