2012-05-25 72 views
-1

不是整數的工作我已經做了小提琴:的JavaScript的indexOf方法在對象

http://jsfiddle.net/csS24/

我想要得到的代碼到一個點,它從來沒有顯示一次相同的兩個項目或者當一個項目被點擊時,它不會從數組中拉回同一個項目,似乎只是在邏輯上掙扎一點,而indexOf方法表現得很奇怪。

var justAdded = []; 
justAdded['first'] = 0; 
justAdded['second'] = 1; 

newHtml = returnRandom().split('|'); 

justAdded[e.id] = parseInt(newHtml[0], 10); 

    if(justAdded.indexOf(parseInt(newHtml[0], 10)) == -1){ 
     e.style.opacity = 0; 
     e.innerHTML = newHtml[1]; 
     e.style.opacity = 1; 
     e.setAttribute('data-id', newHtml[0]); 
    } else { 
     uniq(clickedEl); 
    } 

var returnRandom = function(){ 
    return options[Math.floor(Math.random() * options.length)] 
}; 

e.id將等於'第一'或'第二'。 returnRandom()將從選項陣列抓住一個隨機值:

var options = [ 
    '0|Flash', 
    '1|Internet Explorer', 
    '2|Java', 
    '3|!important' 
]; 
+4

如何在此處發佈您的代碼。我想你會知道這樣做後,要求超過400並回答了200多個問題。 – 2012-05-25 23:25:57

+0

@amnotiam它的所有相關的,但這裏是要點 – benhowdle89

+3

JS內置函數不會表現奇怪 - 只有用戶函數(和PHP庫函數)這樣做。 – Alnitak

回答

2

你似乎加入非數字屬性到數組。

indexOf()方法旨在處理和返回數字屬性。

此外...

  • processAnswer處理程序將元件的ID addHtml ...像 「第一」, 「第二」

  • addHtml使用該ID字符串搶非常相同的元素存儲在一個具有相同名稱的變量中,然後將該元素傳遞給uniq

  • uniq將屬性添加到justAdded數組,其中鍵是元素的ID。

您不斷在傳遞元素及其ID之間切換,並使用其中一個在每個下一個函數中獲取另一個。這就是說你的代碼看起來非常混亂,我認爲你只需要從頭開始,重新思考你的代碼。


而且,到底是有什麼用?...

var options = [ 
    '0|Flash', 
    '1|Internet Explorer', 
    '2|Java', 
    '3|!important' 
]; 

你爲什麼要硬編碼到索引中的字符串數組?數組是有序列表。他們已經掌握了指數。

var options = [ 
    'Flash',    // 0 
    'Internet Explorer', // 1 
    'Java',     // 2 
    '!important'   // 3 
];