2014-02-17 3 views
0

У меня есть проблема с моей функции и ее arguments ... это код:Javascript: функция и аргумент

function elab(){ 

    var up = arguments[0]; 
    var id = arguments[1]; 
    len = arguments.length - 3; 

    for(var a = 1; a <= 10; a++){ 

     arg = (arguments[2] + a); // id tag html : [nome][num] 
     document.getElementById(arg).style.display = "block"; 
    } 

    for (var i = 3; i < len; i++) { 

     alert('test1'); 
     document.getElementById(arguments[i]).style.display = "none"; 
     alert('test2'); 
    } 

    change_price(up, id); 
} 

скрипт висит на втором цикле: он печатает 'test1' но не 'test2'. Где ошибка? ТНХ все;)

+1

Что такое 'id tag html: [nome] [num]' предполагается делать? – user2357112

+0

Вы имели в виду '(arguments [(2 + a)])'? – ponciste

+0

Вероятно, он не зависает, скорее всего, он ошибся; наиболее вероятной ошибкой будет то, что элемент не может быть найден. –

ответ

0

Обратите внимание, что этот совет должен быть использован для всех вещей неуверенных:

for (var i = 3; i < len; i++) { 
    var node = document.getElementById(arguments[i]); 

    if (node) { 
     node.style.display = "none"; // block 
    } 
} 

Другими словами, всегда проверить, если элемент может быть найден, если вы не уверены на 100%. Чтобы быть еще более педантичным:

for (var i = 3; i < len; i++) { 
    var node = document.getElementById(arguments[i]); 

    if (!node) { 
     throw "Element " + arguments[i] + " not found."; 
    } 
    node.style.display = "none"; // block 
} 
Смежные вопросы