【问题标题】:Check if array contains certain string, then select that item检查数组是否包含某个字符串,然后选择该项目
【发布时间】:2016-09-13 10:55:50
【问题描述】:

好的,这听起来可能很模糊,但我会尽力解释。

我有一张图片,我使用.attr('src') 函数收集了它的来源。此图像是其他 5 个图像之一,都在同一个 div 中。到目前为止,我收集了两件事:

  1. var src,包含我点击的图片的url。
  2. var数组,一个包含div中所有图片的数组。

这是 HTML 结构:

<div class="images">
 <img src="path1" />
 <img src="path2" />
 <img src="path3" />
 <img src="path4" />
 <img src="path5" />
</div>

想象一下,我点击了第三张图片。变量“src”将包含值“path3”。我希望,当我单击页面底部的箭头图标时,该值将切换为“path2”,即数组中的前一项。

我该怎么做?

【问题讨论】:

  • 当箭头图标被点击时,选中的图片src会和上一个切换?您能否编辑您的问题并告诉我们您的预期输出。
  • 使用jquery的prev函数,如this

标签: javascript jquery html arrays src


【解决方案1】:

假设你的变量srcarray

var index = array.findIndex(function(img) {
    return img.src === src
})

var elementYouWant = array[index - 1]

如果index 为零,您可以添加检查,因为在这种情况下index - 1 将是-1elementYouWant 将是undefinedarray.length也一样

【讨论】:

    【解决方案2】:

    假设你所有的图片都放在同一个父元素 &lt;div&gt; 中,你可以使用 jQuery 的 .prev() 来访问指定元素的前一个兄弟元素:

    function getPrevSrc (currentSrc) {
        // Get DOM element with the given src attribute
        // could be optimized by providing a parent element
        var $currentImg = $("[src='" + currentSrc + "']");
    
        // Get previous sibling
        // Note that using this on the first image is an edge case,
        // so you have to handle it accordingly to your needs
        var $prevImg = $currentImg.prev();
    
        // Return previous src
        return $prevImg.attr("src");
    }
    

    【讨论】:

      【解决方案3】:
      var imageArray; //Ur images array;
      var index=imageArray.indexOf(src);
      if(index>0) {
        src=imageArray[index-1]; 
      }
      

      【讨论】:

        【解决方案4】:

        你应该试试下面的代码:

        $('img').click(function() {
                alert($(this).attr('src'));
            alert($(this).prev('img').attr('data-value'));
        });
        

        您可以在这里查看:https://jsfiddle.net/xeq4yn0z/

        【讨论】:

          猜你喜欢
          • 2021-09-29
          • 2021-05-20
          • 1970-01-01
          • 2014-07-27
          • 1970-01-01
          • 2016-08-09
          • 2017-09-28
          • 1970-01-01
          • 2022-06-30
          相关资源
          最近更新 更多