2016-05-04 226 views
0

所以我打電話以下功能:JQuery的VAL返回undefined

function updateOutput(a){ 

    var n = $('#selector').val(); 

    $('#hueslide').val(a[n].hue); 
    $('#huetext').val(a[n].hue); 
} 

而且我得到一個錯誤:「無法讀取的未定義的屬性‘色相’」

但是,當我使用console.log(n)時,它返回一個值。當我手動在[n]中插入相同的值時,我會得到預期的結果。我猜這是一個異步問題,但相同的代碼在早期版本中工作,我不知道如何解決它。

具體來說,試圖調試updateOutput使用的console.log的時候,我得到如下:

console.log(n); //returns 0 
console.log(a); //returns an array of objects 
console.log(a[0]); //returns first object in array 
console.log(a(n)); // returns undefined 

回答

0

好的,我明白了。發現n0的值我通過了string。所以加入n = parseInt(n);解決了這個問題。

+0

那麼它工作?啊哈好。現在**接受你的答案**。 – fWd82

3

該錯誤不說n是不確定的,甚至a,它說,沒有物業hue分配給a[n]。無論你傳遞給updateOutput有沒有關鍵匹配n,也有屬性hue

+0

所以奇怪的是,當我手動傳遞的值(在這種情況下,0)它的工作。因此, 函數updateOutput(a){ var n = $('#selector')。val(); $('#hueslide')。val(a [0] .hue); $('#huetext').val(a [0] .hue); } 返回我期待的值。 – andrius3000

1

嘗試這樣的:

function updateOutput(a){ 

    $(document).ready(function(e) { 

     var n = $('#selector').val(); 

     $('#hueslide').val(a[n].hue); 
     $('#huetext').val(a[n].hue); 


    }); 
} 

你必須等待,直到要素滿載。這就是爲什麼你必須使用現成的方法。

+1

嗯,這似乎並不奏效。我將編輯我的問題以顯示上下文中的完整代碼。 – andrius3000