动态地向javascript对象添加新元素

时间:2014-10-25 20:55:12

标签: javascript jquery html object

我正在尝试用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>

1 个答案:

答案 0 :(得分:0)

我刚刚对你的javascript进行了一次调整Fiddle -

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 = [];将是一个空数组,并且始终只有一个元素(添加的最后一封电子邮件)。