Javascript масив + индекс

Все още имам нужда от помощ с това и редактирах публикацията в jsfiddle, за да покажа моя проблем. http://jsfiddle.net/7ztEf/6/

Искам да върна число към свързаната стойност на индекса [0] =0 [1]=1, както можете да видите, низът на индекса връща всички числа. Благодаря отново Пол

Имам скрипт за генериране на числа, който връща стойности на DIV ID. Трябва да се свържа с това по някакъв начин, за да разреша замяната на цвета въз основа на числовата стойност, т.е. > 1 && <= 20 = red и т.н.

function myNumbers(numbers, type) {
    for (var x in numbers) {
       document.getElementById(type + x).innerHTML = numbers[x];
    } 
}

Този скрипт запълва всяко от DIV с име num0 ... num3 с произволно число.

Успях да направя заявка за първата стойност на numbers[x], но трябва да задам ред на индекса, за да превъртя останалите или нещо подобно.


person tuvboy    schedule 04.03.2013    source източник
comment
какво е числата? дали е масив или обект   -  person Arun P Johny    schedule 04.03.2013
comment
Вашият код изглежда добре, можете ли да проверите тази демонстрация и да кажете какво е желаното o/p jsfiddle.net/arunpjohny/ 7ztEf   -  person Arun P Johny    schedule 04.03.2013
comment
Не трябва да използвате for..in с масиви, той ще обхожда всички изброими свойства (включително наследени свойства), а не само числови индекси. Освен това редът не е гарантиран (но това вероятно не е проблем тук). Използвайте нормален for цикъл с нарастващ индекс или forEach с подложка за по-стари браузъри.   -  person RobG    schedule 04.03.2013
comment
Здравей, благодаря Джони, използвайки публикувания от теб jsfiddle, искам да направя заявка за стойността на myNumbers, ако стойността е 1, тогава div bg =синьо, ако стойността е две, bg =червено и т.н.   -  person tuvboy    schedule 04.03.2013


Отговори (2)


Използвайте Array.forEach.

numbers.forEach(function (number, index) {...})
person pdoherty926    schedule 04.03.2013

Не използвайте for..in за масиви. Те са предназначени да се използват върху обекти, така че използването на for..in върху масиви ще върне неща като елемента length.

Или използвайте forEach, както е споменато в ethagnawl, или използвайте традиционния цикъл for:

for (var x=0; x < numbers.length; x++) {
   document.getElementById(type + x).innerHTML = numbers[x];
}
person slebetman    schedule 07.03.2013
comment
Благодаря @slebetman! Това все още връща [0] = 0,1,2,3. Трябва да изброя индекс [0][1][2] и стойността на числата. Наздраве П - person tuvboy; 07.03.2013
comment
Много близо. Все още има неща, които не разбирате. Току-що промених няколко знака във вашия код, за да го поправя: jsfiddle.net/h9AS6/1 - person slebetman; 07.03.2013
comment
Прочетете внимателно разликите между моя jsfiddle и вашия. - person slebetman; 07.03.2013
comment
Благодаря отново @slebetman, който ми помогна, сега имам достъп до индекса на масива. Бихте ли препоръчали как да сравня върнатите стойности на индекса? т.е. за всеки индекс [0][1][2][3] ако myNumbers == 1, отколкото да направи нещо друго, ако myNumbers ==2 направи нещо. JS не е моето нещо, така че оценявам всяка помощ!!! наздраве П - person tuvboy; 07.03.2013
comment
numbers[x] е стойността, x е ключът, а numbers е масивът. Така че просто направете if(numbers[x] == 1) ... и т.н - person slebetman; 07.03.2013
comment
Исках да благодаря на @slebetman за твоите публикации! просто правя if(numbers[x] == 1) връща индекс 0 заявка за всички индекси 0,1,2,3. Това беше мястото, където започна всичко за мен и защо започнах надолу по подхода за всеки в индекса. Преминах пълен кръг и така публикувах отново stackoverflow.com/questions/15352734/ array-index-n-o-value - person tuvboy; 12.03.2013