2013-01-07 134 views
-2

我需要在返回多值的函數中使用if語句。我試過這個,但它不起作用。如果返回語句中的條件

a(this).attr('src', function(i, current){ 
    if (i == 'http://www.old.com'){ 
     return current.replace('http://www.old.com','http://www.new.com'); 
    } 
    else if (i == 'http://www.older.com'){ 
     return current.replace('http://www.older.com','http://www.new.com'); 
    } 
    else(); 
}); 
+2

爲什麼你有一個空封鎖其他? – jbabey

+4

「不工作」是什麼意思? – j08691

+2

不應該是'else {}'?或者更好的是,完全放棄它? –

回答

3

jQuery的基於回調的.attr函數的格式是

.attr(attributeName, function(index, attr)) 

if報表使用第一個回調參數,i,這將永遠是索​​引號,但你似乎對他們期待是字符串。但是,每個屬性的字符串值都在第二個回調參數中。你可能打算比較第二個參數current

而且(根據您所提出的意見),你實際上並不想爲old.com做精確匹配,你要看到,如果URL與http://www.old.com開始:

if (current.indexOf('http://www.old.com') == 0) { ... 
+0

這沒有奏效。圖片無法加載。需要替換以用新的src替換舊的src。 – user1937895

+0

@ user1937895編輯我的答案來猜測你真正想要什麼。 – apsillers

+0

這工作brill!謝謝!! – user1937895

1

你測試我然後更換當前。除非現在和我是一樣的,否則你可能會遇到錯誤的情況,而不是取代。另外()是不正確的和不必要的。

a(this).attr('src', function(index, current){ 
    if (current == 'http://www.old.com'){ 
     return 'http://www.new.com'; 
    } 
    else if (current == 'http://www.older.com'){ 
     return 'http://www.new.com'; 
    } 
}); 
編輯以刪除取代,感謝@wirey
+2

我甚至不認爲你需要做一個替換..你不能只是返回新的網址 –

+0

我試過這個,但它不工作。圖像永不加載 – user1937895

+0

我需要替換,因爲我有一個圖像http://www.old.com/something/else/older.gif並需要用http://www.new.com/something/else替換它/older.gif – user1937895