Невозможно сохранить значение в стеке

#javascript

#javascript

Вопрос:

В этом коде subKeys есть некоторые значения, которые извлекаются из cookie, подсказка сообщения cval: 3 , но я не смог поместить каждое subKeys значение в stack массив, который stack всегда пуст.

 var stack = new Array();
var temp = document.cookie;

//alert("cookie: " temp);
function upSelect() {
    temp = temp.replace("tutorSelect=","");
    subKeys=temp.split(",");
    for(var i=0;i<subKeys.length;i  ) {
        alert("cval: " subKeys.length);
        //push to stack?
        stack.push(String(subKeys[i]));
        alert("stack: ",stack.length);
        document.getElementById("t" subKeys[i]).src="tta/rem.png";
    }
}
  

Ответ №1:

Иногда это мелочи, которые беспокоят больше всего. Это способ, которым вы пытаетесь указать длину стека: вместо if alert("stack: ",stack.length); (результатом будет: ‘stack: ‘), используйте: alert("stack: " stack.length); or alert(["stack: ",stack.length].join('')) или rewrite alert , чтобы он мог получать несколько аргументов:

 window._alert = alert;
window.alert = function(){
  _alert(Array.prototype.slice.call(arguments).join(''));
}
  

Комментарии:

1. хорошо, отлично, что решили это, это ошибка программирования с actionscript.

Ответ №2:

Предполагая, что в нем temp что-либо есть, этот код будет успешно запущен stack . Но я думаю, что ваш alert может быть испорчен:

 alert("stack: ",stack.length);
//             ^--- here
  

Вы, вероятно, хотели там, alert принимает только один аргумент.

Примеры (я начал с temp = "one,two,three" на случай, если у вас нет файлов cookie для jsbin.com ):

Ваша версия (отображается stack: , но не имеет длины)

Рабочая версия (показывает stack: 1 , затем stack: 2 , затем stack: 3 )