2013-02-20 34 views
0

我想與一個數組一起工作,並遇到一些困難。我知道這是基本的,但我還是新的jQuery的/ JavaScript的所以不知道爲什麼這是不工作javascript數組 - - 每個()循環 - 檢測字符串和交換

var vids = new Array(); 

vids[0] = $('#tab_content_1 iframe').attr('src'); 
vids[1] = $('#tab_content_2 iframe').attr('src'); 
vids[2] = $('#tab_content_3 iframe').attr('src'); 
vids[3] = $('#tab_content_4 iframe').attr('src'); 

//alert(vids); 

$.each(vids, function() { 
    if($(this).attr('src').search('?w=opaque')){ 
      $(this).attr('src').replace('$?=opaque', '?w=transparent'); 
      alert('hi'); 
     } 
}); 

我試圖尋找一個iframe的網址爲不透明參數,並與交換出來透明參數。

+0

什麼部分不工作?你有沒有看到你的戒備? – 2013-02-20 17:41:46

回答

3

您有幾個問題,但最大的問題是您要創建一個iframe數組,但後來嘗試引用父框架。這裏有您需要的內容(注意很多簡化):

$('#tab_content_1 iframe, #tab_content_2 iframe, #tab_content_3 iframe, #tab_content_4 iframe', function() { 
    var frame = $(this), 
     src = frame.attr('src'); 
    if (src.indexOf('?w=opaque') != -1) 
    { 
     frame.attr('src', src.split('?w=opaque').join('?w=transparent')); 
     alert('hi'); 
    } 
}); 

注意,search方法被誤用,以及replace不工作,你正在使用它的方式。因此,更新的代碼使用indexOf來檢查字符串,並使用split/join來替換。

此外,我們直接在開始時使用jQuery DOM查詢選擇器,而不是單獨的iframe數組(這是冗餘的)。

最後,請注意使用attr(prop, value)來設置屬性。

+0

奇怪,它看起來不錯,但似乎沒有工作..? – EZDC 2013-02-20 18:22:56

+0

有一個拼寫錯誤('src.split('?= opaque')'vs'src.split('?w = opaque')')。這可能是問題;否則,開始添加'console.log(...)'調用來調試你的代碼。 – 2013-02-20 19:18:09

0

這是不是會工作:

$.each(vids, function() { 
    if ($(this).attr('src').indexOf('?') > 0) { 
     var str = $(this).attr('src').substr(0, $(this).attr('src').indexOf('?')); 
     $(this).attr('src', str+'?w=transparent'); 
     alert($(this).attr('src')); 
    } 
});