【问题标题】:Output object values in javascript在javascript中输出对象值
【发布时间】:2015-02-04 12:45:15
【问题描述】:

我有一个 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”和“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 所说的 return true。解决方案是创建另一个循环,并将所有值插入变量中,以便我可以在警报中使用它。 p>

【问题讨论】:

  • 所以在函数内部有一个标志,并在循环之后返回那个标志。在循环内部,您只需调整标志。
  • 为什么不在循环中建立一个字符串,然后,如果字符串有内容,警告?
  • 请举一些例子?我是 javascript 的新手
  • 也许您想详细说明您想要实现的目标(而不是您想要如何实现它)。也许这是一个 XY 问题,meta.stackexchange.com/questions/66377/what-is-the-xy-problem
  • 如果你解决了它,请不要忘记接受正确的答案,或者如果没有任何答案,请发布你自己的解决方法。

标签: javascript php object


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个:

    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/

    【讨论】:

    • 我刚刚更新了我的答案。请看一下。我用你的一些代码更改了我的代码,但仍然只显示第一个值。
    【解决方案3】:

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

    【讨论】:

    • 我不想改变这个功能,因为阻碍我的只是这个小问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多