javascript - 动态向 JavaScript 对象添加新元素

标签 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>

最佳答案

我刚刚做了一个 Fiddle只需对您的 JavaScript 进行一项调整 -

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

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

关于javascript - 动态向 JavaScript 对象添加新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26567156/

相关文章:

jquery - 如何仅在高度超过 2400 像素的页面上显示 AdSense?

javascript - 为什么 `Polymer()` 函数需要元素名称作为它的第一个参数?

javascript - jQuery 在单击内联 href 时防止 div 的单击行为

javascript - 如何从 React 状态数组中删除未选中的复选框?

javascript - 有什么简单的方法可以清理 Google Maps v3 API 上的所有标记、折线和其他叠加层吗?

javascript - 如何计算 json 对象中的属性不同值

javascript - 使用 JavaScript 解析 JSON 的最佳方式

javascript - 单击标签时更改值

html - 在带有 vueJS 的 html 文件中使用预呈现的 html 作为变量

javascript - 修复了图像无法在旧版移动浏览器上呈现的问题,例如黑莓