2015-07-31 2 views
-3

У меня есть этот код:Параметрирование функции

<!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

http://www.w3schools.com/js/js_functions.asp – Hacketo

ответ

0

Чтобы установить контейнер как свойство объекта, вы не можете использовать точечную нотацию. Используйте кронштейн обозначения вместо:

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

    return item.lastAttr = scanvar; 

})}; 

Кроме того, при выполнении этой функции передать фактический массив в качестве параметра, а не строка с именем массива. Наконец, вы ничего не возвращаете из своей функции arrayscanner. Это помогает устранить ваш код при его написании, вы не должны просто писать больше кода, если небольшая часть не работает. Я добавил пару console.log s, чтобы показать вам, где вы могли бы устранить эти проблемы.

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

Вы заметите, что я нашел три различные проблемы, а код еще не на самом деле добавить в HTML. В случае переполнения стека вы должны изолировать единственную проблему, которую вы испытываете самостоятельно. Вы никогда не должны публиковать код, зная, где он не работает.

Поиск этой единственной точки отказа не только хорош для публикации здесь, но и критического навыка программирования.

Смежные вопросы