2011-06-08 47 views
3

所以,我有一個div中的圖像共享同一個類,並且一次選擇其中一個圖像作爲該圖像的單個視圖。在這個單一視圖中,我使用了箭頭來在圖像之間循環。共享相同類別的圖像具有連續的alt值。如何讓JQuery返回有效的img src?

現在,我可以得到先前的alt值,並將單個視圖中的圖像的src設置爲該圖像的源。但是,我似乎無法獲得與以下圖像相同的效果。你可以看到,改變源代碼是完全一樣的,它可以很好地達到這兩個警報,但返回一個空源。

編輯:看來,在leftButton點擊函數中,alt正在適當遞減,但在右按鈕單擊函數中,當我嘗試增加alt時,它反而附加了'1',這樣最終altVal的值是'01'。這沒有任何意義,我..

+1

你可以提供一個[JS小提琴演示(http://jsfiddle.net/)再現/演示問題了嗎? – 2011-06-08 22:21:31

回答

3

問題在於這兩條線的區別:

var altVal=current.attr("alt").valueOf()-1; 
var altVal=current.attr("alt").valueOf()+1; 

-只有一個含義:減法。如果你在一個字符串上調用它,它會在操作之前轉換成一個數字。

+有兩個含義:添加和連接。如果你用一個數字來呼叫它,它會增加。如果你用一個字符串調用它,它會連接起來。 attr返回一個字符串(就像valueOf-我不確定那是什麼),所以+1的意思是「把1加到字符串的末尾」。

您需要將該值轉換爲數字。我會用unary + operator

var altVal = +current.attr('alt') + 1; 
+0

對於「非懶惰」的答案+1,不像我的。 :) – 2011-06-08 22:28:02

+0

我明白了。感謝您的解釋。我假設valueOf會返回一個值而不是一個字符串。我想我應該看看那個。 – Anonymous 2011-06-08 22:32:48

+2

一個字符串*是一個值... – lonesomeday 2011-06-08 22:33:46

0

如果爲「ALT」的rightButton click事件的最終值是「01」,嘗試加入到它,像這樣使用前parseInt()

parseInt(current.attr("alt").valueOf())+1; 
+0

這是有效的,但我仍然不明白爲什麼它會追加它,而不是將它添加到值中,就像它正在遞減leftButton click函數中的值一樣。 謝謝。我應該早些時候嘗試過,但它沒有必要。 – Anonymous 2011-06-08 22:30:01

+1

@匿名我的答案應該解釋... – lonesomeday 2011-06-08 22:31:24

+1

@匿名者,@ lonesomeday的答案更好,真的。 :) – 2011-06-08 22:34:52