【问题标题】:Add new elements to a javascript object dynamically动态向 javascript 对象添加新元素
【发布时间】:2014-10-25 20:55:12
【问题描述】:

我正在尝试使用 HTML 和 JQuery 制作页面。我想要做的是在文本框中输入一封电子邮件,当按下按钮时,将他添加到一个对象,并显示添加的新电子邮件和已发送的电子邮件。我的问题是新的电子邮件替换了我的电子邮件,它没有在它之后添加。我该如何解决?

这是我的代码

enter code here

<html>
<head>
    <script src="config/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" language="javascript">
        var obj = {};

        $(document).ready(function(){
            $('#agr').click(function(){
                var correo_val = $('#correoe').val();
                var estrc = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

                if(correo_val == ''){
                    alert("Debes agregar un correo");
                }
                else if(!estrc.test(correo_val)){
                    alert("Correo no valido");
                }
                else if(estrc.test(correo_val)){
                    alert("Correo agregado exitosamente");
                    if(!obj.hasOwnProperty(correo_val)){
                        arr = [];
                        arr.push(correo_val);
                        // obj=arr;
                        obj2 = {};
                        obj2 = arr;
                        obj = obj2;

                    }else{  

                        obj2 = {};
                        obj = obj2;
                    }

                    alert(obj);
                    $("#listac").html(obj);
                }
            });
        });

    </script>
</head>

<body>
    <div>
        <table style='margin-top:10%' align='center'>
            <tr> <td> Ingresar correo electr&oacutenico                    </td> </tr>
            <tr> <td> <input type='text' name='correoe' id='correoe'>                  </td> </tr>
            <tr> <td> <input type='button' name='agregar' value='agregar' id='agr'> </td> </tr>
        </table>
    </div>

    <div style="background:#FFFFFF;border:0" class="box" id="LCriterios">
        <h1><span id="field"></span><span style="float:right;"></span></h1>
        <!--<label><span>Tipo de operaci&oacuten</b></span><select class='opSelect' name='selOp' id='selOp'></select></label>
        <label id='selCriterio'></label>
        <label style="height: 30px;"><input type="button" class="btAgregar" value="Agregar" id="btn_add"/></label>-->
        <label id="label12">Correos electr&oacutenicos </label>
        <div id='listac'></div>
    </div>

    </body>

【问题讨论】:

    标签: javascript jquery html object


    【解决方案1】:

    我刚刚制作了一个Fiddle,对你的 javascript 进行了一次调整 -

    if(!obj.hasOwnProperty(correo_val)){
                        arr = []; //  <-- move this to the first line where
                                  // you already have var obj = {};
                        arr.push(correo_val);
                        ...
    

    将用于存储有效电子邮件的arr = []; 从该if() 子句移至您还声明var obj = {}; 的代码的第一行。否则,arr = []; 每次在您添加另一封电子邮件之前都是一个空数组,并且始终只有一个元素(添加的最后一封电子邮件)。

    【讨论】:

      猜你喜欢
      • 2016-02-08
      • 1970-01-01
      • 2010-10-18
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      相关资源
      最近更新 更多