从函数向全局数组添加多个数组项

时间:2017-10-08 21:10:01

标签: javascript arrays function scope

/ *问题1:看来我在范围方面遇到了问题。我的目标是将提示响应推送到数组中,而不保留变量在函数内,范围阻止变量进行通信(或至少看起来如此。)这也会阻止getElementById显示为常量而不被调用功能

问题2:当变量全部放在本地时,提示会替换它在数组中的前一项,使其只能添加一个项目,想知道是否有人有关于如何添加越来越多的建议。

HTML:

<p id = "coding"></p>
<button onclick="addTo()">Add</button>
New Quality
<br><br>
<button onclick="noMas()">Delete</button>
Remove Quality

JS:

function addTo(){
var progQual = ["Creative"," "+"Original"+" "+"Innovative", ];
addQuality = prompt("Add Another Quality");
addQuality = progQual.push(" "+addQuality);
document.getElementById("coding").innerHTML = progQual;

function noMas(){progQual.shift(progQual);}
};
有点难过:(

1 个答案:

答案 0 :(得分:0)

首先为您的按钮指定ID并删除onclick属性:

<p id = "coding"></p>
<button id="btn-add">Add</button>
New Quality
<br><br>
<button id="btn-delete">Delete</button>
Remove Quality

在你的JS中,在一个自我调用的匿名函数中隔离你的代码,并在回调的父作用域中定义progEqual。使用addEventListener添加listeneres。:

(function() { //Isolate scope
  /*
   * Define array in parent scope of callbacks to gain access to 
   * same referemce in both callbacks
   */
  var progQual = ["Creative"," "+"Original"+" "+"Innovative"];

  document.getElementById("btn-add").addEventListener("click", function() {
    // Add logic
  });

  document.getElementById("btn-delete").addEventListener("click", function() {
    //Delete logic
  });

}());

有关详细信息,请从Scotch.io - Understanding Javascript Scope搜索Javascript范围,例如本教程。