参数化函数

时间:2015-07-31 08:14:58

标签: javascript arrays json function parameters

我有这段代码:

<!DOCTYPE html>
<html>
<body>

<h2>JSON Array Test</h2>

<p id="outputtext"></p>

<script language="javascript" type="text/javascript">
var arrayinput = {
    collection:[ 
{firstAttr:"XXXA",secAttr:"13156161",lastAttr:"01" }, 
{firstAttr:"XXXB",secAttr:"11153325",lastAttr:"02"  }, 
{firstAttr:"XXXC",secAttr:"14431513",lastAttr:"03"  },  
{firstAttr:"XXXC",secAttr:"13312163",lastAttr:"01"  }]};



var outputElement = document.getElementById("outputtext");

function arrayscanner(arrayvar, container, scanvar){
arrayvar.container.filter(function(item) {

  return item.lastAttr = scanvar;

    })};


var filteredArr = new Array();  
filteredArr = arrayscanner("arrayinput", "collection", "01");



for (var i=0; i<filteredArr.length; i++) {
outputElement.insertAdjacentHTML("beforeend", item.firstAttr + " " + item.secAttr + ", ");
};

</script>

</body>
</html>

由于某种原因,这不起作用。 我得到的错误信息是:

 Element type "filteredArr.length" must be followed by either attribute specifications, ">" or "/>".

我试图使用该函数可以重用参数。 我需要将数组名称,容器名称和我正在扫描的值赋给函数。 输出可以只是一个班轮。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

要将容器设置为object属性,不能使用点表示法。改为使用括号表示法:

function arrayscanner(arrayvar, container, scanvar){
  arrayvar[container].filter(function(item) {

  return item.lastAttr = scanvar;

})};

此外,运行该函数时,将实际数组作为参数传递,而不是具有数组名称的字符串。最后,您没有从arrayscanner函数返回任何内容。它有助于在编写代码时对代码进行故障排除,如果一小部分代码不起作用,您不应该继续编写更多代码。我添加了几个console.log来帮助您了解可以解决这些问题的位置。

http://codepen.io/anon/pen/JdwJKV

您会注意到我找到了三个不同的问题,而且代码仍然没有实际附加到HTML。在Stack Overflow上,您需要隔离您遇到的自己的单个问题。你永远不应该发布代码而不知道它失败的地方。

找到单个失败点不仅有利于在此发布,还有关键的编程技能。

相关问题