2013-05-08 2 views
-1

Я написал довольно простую таблицу массивов, используя 3 значения, определенные пользователем. Эти 3 значения определяют значение переменной. Ранее я написал аналогичный код, но по какой-то причине я не могу понять, почему этот не работает. Стол большой, поэтому я извиняюсь за размер ...Как исправить эту таблицу массивов?

var ssRidgeQty=document.getElementById("ssRidgeTrim").value; 

var ssRidgeWidth=document.getElementById("ssRidgeWidth").value; 

var ssRidgeColorUp; 
if (ssColorChoice=="galvalume") 
{ 
    ssRidgeColorUp="1"; 
} 
else if (ssColorChoice=="Dark Gray" || ssColorChoice=="Antique Bronze" ||  ssColorChoice=="Rural Red" || ssColorChoice=="Dark Green" || ssColorChoice=="Fern Green") 
{ 
    ssRidgeColorUp="2"; 
} 
else if (ssColorChoice=="metallic copper") 
{ 
    ssRidgeColorUp="3"; 
} 
else if (ssColorChoice=="none" && ssRidgeQty>0) 
{ 
    ssRidgeColorUp=0; 
    alert ("please choose a ss color"); 
} 
else 
{ 
    ssRidgeColorUp="4"; 
} 

var ssRidgeCap = new Array(); 
//retail, galvalume 
ssRidgeCap [[0],[1],[14]] = 21.75; 
ssRidgeCap [[0],[1],[16]] = 28.1; 
ssRidgeCap [[0],[1],[18]] = 31.3; 
ssRidgeCap [[0],[1],[20]] = 34.5; 
ssRidgeCap [[0],[1],[22]] = 37.7; 
ssRidgeCap [[0],[1],[24]] = 40.9; 
ssRidgeCap [[0],[1],[26]] = 44.1; 
ssRidgeCap [[0],[1],[28]] = 47.3; 
ssRidgeCap [[0],[1],[30]] = 50.5; 
ssRidgeCap [[0],[1],[32]] = 53.7; 
ssRidgeCap [[0],[1],[34]] = 56.9; 
ssRidgeCap [[0],[1],[36]] = 60.1; 
ssRidgeCap [[0],[1],[38]] = 63.3; 
ssRidgeCap [[0],[1],[40]] = 66.5; 
//retail, Kynar 
ssRidgeCap [[0],[2],[14]] = 25.85; 
ssRidgeCap [[0],[2],[16]] = 31.3; 
ssRidgeCap [[0],[2],[18]] = 34.9; 
ssRidgeCap [[0],[2],[20]] = 38.5; 
ssRidgeCap [[0],[2],[22]] = 42.1; 
ssRidgeCap [[0],[2],[24]] = 45.7; 
ssRidgeCap [[0],[2],[26]] = 49.3; 
ssRidgeCap [[0],[2],[28]] = 52.9; 
ssRidgeCap [[0],[2],[30]] = 56.5; 
ssRidgeCap [[0],[2],[32]] = 60.1; 
ssRidgeCap [[0],[2],[34]] = 63.7; 
ssRidgeCap [[0],[2],[36]] = 67.3; 
ssRidgeCap [[0],[2],[38]] = 70.9; 
ssRidgeCap [[0],[2],[40]] = 74.5; 
//retail, Metallic Copper 
ssRidgeCap [[0],[3],[14]] = 26.55; 
ssRidgeCap [[0],[3],[16]] = 35.3; 
ssRidgeCap [[0],[3],[18]] = 39.4; 
ssRidgeCap [[0],[3],[20]] = 43.5; 
ssRidgeCap [[0],[3],[22]] = 47.6; 
ssRidgeCap [[0],[3],[24]] = 51.7; 
ssRidgeCap [[0],[3],[26]] = 55.8; 
ssRidgeCap [[0],[3],[28]] = 59.9; 
ssRidgeCap [[0],[3],[30]] = 64; 
ssRidgeCap [[0],[3],[32]] = 68.1; 
ssRidgeCap [[0],[3],[34]] = 72.2; 
ssRidgeCap [[0],[3],[36]] = 76.3; 
ssRidgeCap [[0],[3],[38]] = 80.4; 
ssRidgeCap [[0],[3],[40]] = 84.5; 
//retail, Syl-Poly 
ssRidgeCap [[0],[4],[14]] = 22.5; 
ssRidgeCap [[0],[4],[16]] = 28.9; 
ssRidgeCap [[0],[4],[18]] = 32.2; 
ssRidgeCap [[0],[4],[20]] = 35.5; 
ssRidgeCap [[0],[4],[22]] = 38.8; 
ssRidgeCap [[0],[4],[24]] = 42.1; 
ssRidgeCap [[0],[4],[26]] = 45.4; 
ssRidgeCap [[0],[4],[28]] = 48.7; 
ssRidgeCap [[0],[4],[30]] = 52; 
ssRidgeCap [[0],[4],[32]] = 55.3; 
ssRidgeCap [[0],[4],[34]] = 58.6; 
ssRidgeCap [[0],[4],[36]] = 61.9; 
ssRidgeCap [[0],[4],[38]] = 65.2; 
ssRidgeCap [[0],[4],[40]] = 68.5; 
//Contractor, galvalume 
ssRidgeCap [[1],[1],[14]] = 20.38; 
ssRidgeCap [[1],[1],[16]] = 26.5; 
ssRidgeCap [[1],[1],[18]] = 29.5; 
ssRidgeCap [[1],[1],[20]] = 32.5; 
ssRidgeCap [[1],[1],[22]] = 35.5; 
ssRidgeCap [[1],[1],[24]] = 38.5; 
ssRidgeCap [[1],[1],[26]] = 41.5; 
ssRidgeCap [[1],[1],[28]] = 44.5; 
ssRidgeCap [[1],[1],[30]] = 47.5; 
ssRidgeCap [[1],[1],[32]] = 50.5; 
ssRidgeCap [[1],[1],[34]] = 53.5; 
ssRidgeCap [[1],[1],[36]] = 56.5; 
ssRidgeCap [[1],[1],[38]] = 59.5; 
ssRidgeCap [[1],[1],[40]] = 62.5; 
//Contractor, Kynar 
ssRidgeCap [[1],[2],[14]] = 25.2; 
ssRidgeCap [[1],[2],[16]] = 30.5; 
ssRidgeCap [[1],[2],[18]] = 34; 
ssRidgeCap [[1],[2],[20]] = 37.5; 
ssRidgeCap [[1],[2],[22]] = 41; 
ssRidgeCap [[1],[2],[24]] = 44.5; 
ssRidgeCap [[1],[2],[26]] = 48; 
ssRidgeCap [[1],[2],[28]] = 51.5; 
ssRidgeCap [[1],[2],[30]] = 55; 
ssRidgeCap [[1],[2],[32]] = 58.5; 
ssRidgeCap [[1],[2],[34]] = 62; 
ssRidgeCap [[1],[2],[36]] = 65.5; 
ssRidgeCap [[1],[2],[38]] = 69; 
ssRidgeCap [[1],[2],[40]] = 72.5; 
//Contractor, Meta1llic Copper 
ssRidgeCap [[1],[3],[14]] = 25.85; 
ssRidgeCap [[1],[3],[16]] = 34.5; 
ssRidgeCap [[1],[3],[18]] = 38.5; 
ssRidgeCap [[1],[3],[20]] = 42.5; 
ssRidgeCap [[1],[3],[22]] = 46.5; 
ssRidgeCap [[1],[3],[24]] = 50.5; 
ssRidgeCap [[1],[3],[26]] = 54.5; 
ssRidgeCap [[1],[3],[28]] = 58.5; 
ssRidgeCap [[1],[3],[30]] = 62.5; 
ssRidgeCap [[1],[3],[32]] = 66.5; 
ssRidgeCap [[1],[3],[34]] = 70.5; 
ssRidgeCap [[1],[3],[36]] = 74.5; 
ssRidgeCap [[1],[3],[38]] = 78.5; 
ssRidgeCap [[1],[3],[40]] = 82.5; 
//Contractor, Syl-Poly 
ssRidgeCap [[1],[4],[14]] = 21.75; 
ssRidgeCap [[1],[4],[16]] = 28.1; 
ssRidgeCap [[1],[4],[18]] = 31.3; 
ssRidgeCap [[1],[4],[20]] = 34.5; 
ssRidgeCap [[1],[4],[22]] = 37.7; 
ssRidgeCap [[1],[4],[24]] = 40.9; 
ssRidgeCap [[1],[4],[26]] = 44.1; 
ssRidgeCap [[1],[4],[28]] = 47.3; 
ssRidgeCap [[1],[4],[30]] = 50.5; 
ssRidgeCap [[1],[4],[32]] = 53.7; 
ssRidgeCap [[1],[4],[34]] = 56.9; 
ssRidgeCap [[1],[4],[36]] = 60.1; 
ssRidgeCap [[1],[4],[38]] = 63.3; 
ssRidgeCap [[1],[4],[40]] = 66.5; 
//Wholesale, galvalume 
ssRidgeCap [[2],[1],[14]] = 19; 
ssRidgeCap [[2],[1],[16]] = 24.9; 
ssRidgeCap [[2],[1],[18]] = 27.7; 
ssRidgeCap [[2],[1],[20]] = 30.5; 
ssRidgeCap [[2],[1],[22]] = 33.3; 
ssRidgeCap [[2],[1],[24]] = 36.1; 
ssRidgeCap [[2],[1],[26]] = 38.9; 
ssRidgeCap [[2],[1],[28]] = 41.7; 
ssRidgeCap [[2],[1],[30]] = 44.5; 
ssRidgeCap [[2],[1],[32]] = 47.3; 
ssRidgeCap [[2],[1],[34]] = 50.1; 
ssRidgeCap [[2],[1],[36]] = 52.9; 
ssRidgeCap [[2],[1],[38]] = 55.7; 
ssRidgeCap [[2],[1],[40]] = 58.5; 
//Wholesale, Kynar 
ssRidgeCap [[2],[2],[14]] = 22.48; 
ssRidgeCap [[2],[2],[16]] = 26.5; 
ssRidgeCap [[2],[2],[18]] = 29.5; 
ssRidgeCap [[2],[2],[20]] = 32.5; 
ssRidgeCap [[2],[2],[22]] = 35.5; 
ssRidgeCap [[2],[2],[24]] = 38.5; 
ssRidgeCap [[2],[2],[26]] = 41.5; 
ssRidgeCap [[2],[2],[28]] = 44.5; 
ssRidgeCap [[2],[2],[30]] = 47.5; 
ssRidgeCap [[2],[2],[32]] = 50.5; 
ssRidgeCap [[2],[2],[34]] = 53.5; 
ssRidgeCap [[2],[2],[36]] = 56.5; 
ssRidgeCap [[2],[2],[38]] = 59.5; 
ssRidgeCap [[2],[2],[40]] = 62.5; 
//Wholesale, Meta1llic Copper 
    ssRidgeCap [[2],[3],[14]] = 23.15; 
ssRidgeCap [[2],[3],[16]] = 30.5; 
ssRidgeCap [[2],[3],[18]] = 34; 
ssRidgeCap [[2],[3],[20]] = 37.5; 
ssRidgeCap [[2],[3],[22]] = 41; 
ssRidgeCap [[2],[3],[24]] = 44.5; 
ssRidgeCap [[2],[3],[26]] = 48; 
ssRidgeCap [[2],[3],[28]] = 51.5; 
ssRidgeCap [[2],[3],[30]] = 55; 
ssRidgeCap [[2],[3],[32]] = 58.5; 
ssRidgeCap [[2],[3],[34]] = 62; 
ssRidgeCap [[2],[3],[36]] = 65.5; 
ssRidgeCap [[2],[3],[38]] = 69; 
ssRidgeCap [[2],[3],[40]] = 72.5; 
//Wholesale, Syl-Poly 
    ssRidgeCap [[2],[4],[14]] = 19.1; 
ssRidgeCap [[2],[4],[16]] = 26.5; 
ssRidgeCap [[2],[4],[18]] = 29.5; 
ssRidgeCap [[2],[4],[20]] = 32.5; 
ssRidgeCap [[2],[4],[22]] = 35.5; 
ssRidgeCap [[2],[4],[24]] = 38.5; 
ssRidgeCap [[2],[4],[26]] = 41.5; 
ssRidgeCap [[2],[4],[28]] = 44.5; 
ssRidgeCap [[2],[4],[30]] = 47.5; 
ssRidgeCap [[2],[4],[32]] = 50.5; 
ssRidgeCap [[2],[4],[34]] = 53.5; 
ssRidgeCap [[2],[4],[36]] = 56.5; 
ssRidgeCap [[2],[4],[38]] = 59.5; 
ssRidgeCap [[2],[4],[40]] = 62.5;  

var ssRidgePrice = ssRidgeCap [[priceLevel],[ssRidgeColorUp],[ssRidgeWidth]]; 


document.getElementById("ssRidgeTest4").innerHTML=ssRidgePrice; 

результат всегда приходит из последнего набора наборов меченых Оптовая SYL-Pol. Если я изменю ширину, значение изменится, но если я изменю уровень цен или цвет (первые 2 [] в массиве, ничего не изменится. По некоторым причинам эти значения застряли на [2] и [4].

Если вам нужна какая-либо другая рекомендация, просто спросите, и я отправлю ее. Мне нужна срочная помощь.

(ps. Price Level устанавливается радиокнопкой 1, 2, 3, когда я делаю тест для распечатки три решающих переменных «Уровень цен», «ssRidgeColorUp», и ssRidgeWidth, они всегда приходят правильно, но массив не поднимать их?

заранее спасибо за ваше время.

+0

Есть ли какая-либо причина вы не будете использовать массив объектов, который описывает эти тонкие гс? Кроме того, можете ли вы опубликовать jsfiddle? Мне было бы интересно увидеть пример этого. – Justin

+0

Что такое jsFiddle? Использование большого массива просто упрощается. Я просто не могу, чтобы жизнь меня определяла, почему это не работает. даже если я скажу, что код для записи ssRidgeCap начинает печатать значения в 19.1 –

+0

JSFiddle.net - это аккуратный маленький сайт, на котором вы можете проверить код или поделиться им с другими на лету. Это будет долгий путь в поиске контекста, в котором вы используете код, и это может быть нечто иное, чем то, что вы опубликовали, вызывая проблему. – Justin

ответ

1

Другим решением является использование многомерного массива

var ssRidgeCap = new Array(); 

ssRidgeCap[0] = []; 
ssRidgeCap[0][1] = []; 
ssRidgeCap[0][1][14]= 21.75; 

Тогда это может быть доступ с помощью

ssRidgeCap[0][1][14] 
+0

Я думаю, что это может сработать, однако мне нужно создать еще один массив в ssRidgeCap [0] [2] –

+0

@ABBryan да, вот и вся точка многомерного массив –

+0

Благодарим вас за помощь, теперь у меня есть работа. –

1

Вместо массива использовать объект

var ssRidgeCap = { 
    pl_0 : { 
     rc_1 : { 
      rw_14 : 21.75, 
      rw_16 : 28.1 
     }, 
     rc_2 : { 
      rw_14 : 25.85, 
      rw_16 : 31.3 
     } 
    }, 
    pl_1 : { 
     rc_1 : { 
      rw_14 : 20.38, 
      rw_16 : 26.5 
     }, 
     rc_2 : { 
      rw_14 : 25.2, 
      rw_16 : 30.5 
     } 
    } 
} 

Тогда

var ssRidgePrice = ssRidgeCap['pl_' + priceLevel]['rc_' + ssRidgeColorUp]['rw_' + ssRidgeWidth]; 
+0

Для обновления этих цен объект будет намного более трудоемким. Этот массив должен работать, и я бы скорее выяснил, что с ним не так. –

+0

@ABBryan AFAK массив, который по модели вам не сработает, если вам нужно, вы сделали его в трехмерном массиве –

+0

Итак, как мне это сделать? –

0

Почему бы не определить многомерный массив в одной команде?

Синтаксис для доступа к одному MultiDim элемента массива (скажем, 2 тусклых) является

a[i][j] = X; 

Также при доступе к не существующему элементу определенного массива, все предыдущие элементы созданы, если не существует.

При доступе к (не) существующему элементу несуществующего массива возникает ошибка.

var a = []; 
a[5] = 4; // ok, elements 0,1,2,3,4 are created and set to undefined 
a[6][4] = 53; // not ok, error, cannot convert undefined to object. 

Пример определение

var ssRidgeCap = 
[ 
    // 0 
    [ 
    // 0, 0 
    [ 54, 35, 64 ], 
    // 0, 1 
    [ 54, 23, 66 ] 
    ], 
    // 1 
     // 1, 0 
     [ 23, 6, 75], 
     // 1, 1 
     [ 22, 66, 22] 
    ] 
]; 
+0

, поэтому это ... ssRidgeCap [[0], [1], [14]] = 21.75; должно быть это ... ssRidgeCap [0,1,14] = 21,75? –

+0

Возможно, вам нужно быть немного осторожнее. Это должно быть ssRidgeCap [0] [1] [14] = 21.75 – basos

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