参数化函数

Parameterizing a function

本文关键字:函数 参数      更新时间:2023-09-26

我有这样的代码:

<!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 "/>".

我正试图使用函数可重复使用参数。我需要给数组名称,容器名称和值,我正在扫描的功能。输出可以只有一行。

我哪里错了?

要将容器设置为对象属性,不能使用点表示法。使用括号符号代替:

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中,您需要隔离您自己遇到的单个问题。你不应该在不知道代码哪里出错的情况下发布代码。

找到单个故障点不仅有利于在这里发布,而且也是一项关键的编程技能。