【问题标题】:javascript array - .each() loop - detect string and swapjavascript 数组 - .each() 循环 - 检测字符串并交换
【发布时间】:2013-02-05 20:09:16
【问题描述】:

我正在尝试使用数组,但遇到了一些困难。我知道这是基本的,但我还是 jquery/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 的 url 中搜索 opaque 参数并将其替换为 transparent 参数。

【问题讨论】:

  • 哪部分不起作用?你看到你的警报了吗?

标签: jquery arrays loops each


【解决方案1】:

您有几个问题,但最大的问题是您正在创建 iframe src 值的数组,但随后尝试引用父框架。这是您需要的(注意许多简化):

$('#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)来设置属性。

【讨论】:

  • 有一个错字(src.split('?=opaque') vs src.split('?w=opaque'))。这可能是问题所在;否则,开始添加console.log(...) 调用来调试您的代码。
【解决方案2】:

这样不行吗:

$.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'));
   }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    相关资源
    最近更新 更多