Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript数组推送不工作_Javascript_Arrays_Push - Fatal编程技术网

javascript数组推送不工作

javascript数组推送不工作,javascript,arrays,push,Javascript,Arrays,Push,这是我的jS代码。当我按下按钮时,我想添加另一个值为1的元素。现在它正在重置数组,这样我就不会得到多个元素。我在这里干什么 var x = document.getElementsByTagName('button');//return button array var age_array = []; smoker_array = []; relation_array = []; age = 0; //add button clicked x[0].addEventListe

这是我的jS代码。当我按下按钮时,我想添加另一个值为1的元素。现在它正在重置数组,这样我就不会得到多个元素。我在这里干什么

 var x = document.getElementsByTagName('button');//return button array
 var age_array = [];
  smoker_array = [];
  relation_array = [];

  age = 0;

//add button clicked
x[0].addEventListener("click", function(){

   /*
   var age = document.getElementsByName("age")[0].value;//pull age from box
   var relation = document.getElementsByName("rel")[0].value;//pull relation
   let smoker = document.querySelector('[name=smoker').checked;

   //check relation 
   if(relation === "")
   {
       alert("please select a realation"); 
   }

   //check to see if age < 0
   if(age < 0 || age === " ")
   {
       alert("age not applicable");
   }
    */


  age_array.push(1);
  alert(age_array.length);


});

/*function submit(age, relation, smoker)
{
   age_array.push(age);

    alert(age_array[0]);
    alert(age_array[1]);
    /*
    x[1].addEventListener("click", function(){
       var age = JSON.stringify(entry_age);
       alert(entry_age[1]);
       document.getElementbyClassName("debug").innerHTML = JSON.stringify(entry_relation);
       document.getElementByClass("debug").innerHTML = JSON.stringfy(entry_smoker);  
    });
}
    */
下面是html代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Household builder</title>
        <style>
            .debug {
                font-family: monospace;
                border: 1px solid black;
                padding: 10px;
                display: none;
            }
        </style>
    </head>
    <body>
        <h1>Household builder</h1>
        <div class="builder">
            <ol class="household"></ol>
            <form>
                <div>
                    <label>Age
                        <input type="text" name="age">
                    </label>
                </div>
                <div>
                    <label>Relationship
                        <select name="rel">
                            <option value="">---</option>
                            <option value="self">Self</option>
                            <option value="spouse">Spouse</option>
                            <option value="child">Child</option>
                            <option value="parent">Parent</option>
                            <option value="grandparent">Grandparent</option>
                            <option value="other">Other</option>
                        </select>
                    </label>
                </div>
                <div>
                    <label>Smoker?
                        <input type="checkbox" name="smoker">
                    </label>
                </div>
                <div>
                    <button class="add">add</button>
                </div>
                <div>
                    <button type="submit">submit</button>
                </div>
            </form>
        </div>
        <pre class="debug"></pre>
        <script type="text/javascript" src="index.js"></script>
    </body>
</html>

我不知道这是否是原因,但您的代码无法在严格模式下工作

应该是:

var age_array = [],
    smoker_array = [],
    relation_array = [];
或:


嘿,伙计们,谢谢你们的帮助。HTML似乎有问题。我不知道是什么。我让JS使用我自己的HTML工作,我不允许更改HTML。不管怎样,谢谢你们的帮助


将此标记为已应答

您的代码如图所示不会重置数组-可能您已修剪了太多的实际代码,以显示您所做的错误即使错误也会弹出警报吗?如果没有,您可能正在尝试将处理程序分配给尚未加载的元素。将代码作为可运行代码段发布的一个原因是查看它是否按照您所说的那样运行。;-投票关闭,因为无法复制。我无法让它运行,因此我发布了发生了什么?控制台中有什么?var age=0;的情况相同;。当你说它不起作用时,会发生什么?你能看到警报吗?或者看起来什么也没发生。如果是这样,请随意将代码包装成try{…}catche{alerte.toString;}-或同等格式。即使是在严格模式下,也会导致错误,而不是问题中描述的行为。@MasonWhite可能您的页面正在重新加载。这可以解释数据丢失的原因。如果您在addEventListener之前放置另一个警报会怎么样。
var age_array = [],
    smoker_array = [],
    relation_array = [];
var age_array = [];
var smoker_array = [];
var relation_array = [];