我有这段代码:
<!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 "/>".
我试图使用该函数可以重用参数。 我需要将数组名称,容器名称和我正在扫描的值赋给函数。 输出可以只是一个班轮。
我哪里错了?
答案 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上,您需要隔离您遇到的自己的单个问题。你永远不应该发布代码而不知道它失败的地方。
找到单个失败点不仅有利于在此发布,还有关键的编程技能。