Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改每个<;的src img属性;李>&书信电报;img>;项目?_Javascript_Jquery_Image_Loops_Src - Fatal编程技术网

Javascript 如何更改每个<;的src img属性;李>&书信电报;img>;项目?

Javascript 如何更改每个<;的src img属性;李>&书信电报;img>;项目?,javascript,jquery,image,loops,src,Javascript,Jquery,Image,Loops,Src,我想更改每个的src属性 我的代码确实有效,但只适用于第一个元素。你能给我一个主意吗?多谢各位 $(“p”)。单击(函数(){ 变量菜单=$(“img”); 对于(变量i=0;菜单[i];i++){ 常量菜单元素=菜单[i]; if($(menuElement.attr(“src”)!=“dsdassdada.jpg”){ $(menuElement.attr(“src”,“image1.jpg”); 打破 } } }); img{ 宽度:50px; } sdadsa 实际

我想更改每个
  • 的src属性 我的代码确实有效,但只适用于第一个元素。你能给我一个主意吗?多谢各位

    $(“p”)。单击(函数(){
    变量菜单=$(“img”);
    对于(变量i=0;菜单[i];i++){
    常量菜单元素=菜单[i];
    if($(menuElement.attr(“src”)!=“dsdassdada.jpg”){
    $(menuElement.attr(“src”,“image1.jpg”);
    打破
    }
    }
    });
    
    img{
    宽度:50px;
    }
    
    sdadsa


    实际上,直接从
    $('img')
    选择器进行迭代要容易得多,在每次迭代中使用
    $(this)
    引用图像

    在这里,我们逐个检查图像,如果源不是“image1.jpg”或“dsdassdada.jpg”,那么我们将对其进行更改,并设置一个变量,以便循环停止查找

    我没有做一个
    if(src=='this'| | src=='that')
    而是选择了一个缩写
    if(imgs.includes的数组(this\src))

    let newsrc=“image1.jpg”;
    $(“p”)。单击(函数(){
    设为假
    $(“img”)。每个(函数(){
    如果(发现)返回;
    如果(![newsrc,“dsdassdada.jpg”].包括($(this.attr(“src”)){
    $(this.attr(“src”,newsrc);
    找到=真
    }
    })
    });
    
    img{
    宽度:50px;
    }
    
    sdadsa

    使用jQuery函数。下面是脚本的一个简短示例:

    $(“p”)。单击(函数(){
    $(“img”)。每个(函数(){
    if($(this.attr(“src”)!=“dsdassdada.jpg”){
    $(this.attr(“src”,“image1.jpg”);
    }
    });
    });
    
    除了其他答案,您甚至不需要
    if
    语句。您可以通过使用更具体的选择器查询需要更改的元素

    而且,由于您只希望每次单击都会影响序列中的下一个图像,因此也不希望出现循环。您只想找到第一个不匹配的图像

    $(“p”)。单击(函数(){
    $(“img:not([src='image1.jpg'])”[0].src=“image1.jpg”;
    });
    
    img{
    宽度:50px;
    }
    
    sdadsa


    您不必要地从jQuery方法和对象中跳入跳出

    如果要使用jQuery,请使用它,否则请使用所有本机代码。将两者混为一谈可能导致混淆

    可以使用jQuery each()循环所有元素,或者更简单的方法是使用
    attr(attributeName,function)
    循环所有元素,并允许您访问每个实例的当前值

    const imgUrls={
    i1:'https://via.placeholder.com/150/0000FF/808080',
    i2:'https://via.placeholder.com/150/FF0000/FFFFFF'
    }
    $('p')。单击((e)=>{
    $('ul img').attr('src',(i,curr)=>{
    返回电流===imgUrls.i1?imgUrls.i2:imgUrls.i1;
    });
    });
    
    
    点击我


    主要问题似乎是,在for循环的第一次迭代之后,break语句退出了循环。删除break语句将允许循环在其余图像中继续

    // Gets a list of all img tags 
    var menu = $("img");
    
    // Loops through each menu item
    for (var i = 0; menu[i]; i++) {
    
      // Gets element of current index
      const menuElement = menu[i];
    
      // Checks the source of the image to equal a specific value, (currently this is always true as "https://.../red-box-background.jpg" does not equal "dsdassdada.jpg")
      if ($(menuElement).attr("src") != "dsdassdada.jpg") {
    
        // The first image element source is set to "image1.jpg"
        $(menuElement).attr("src", "image1.jpg");
    
        // The for loop is exited, only the first image source is changed.
        break;
      }
    }
    
    其他一些可能有用的东西:

  • sdadsa

    最好是按钮元素:
    切换背景

  • 理想情况下,只需要一个版本的jQuery!应能够移除以下两项中的一项:

  • 可以使用
    each
    方法,它可以稍微简化循环,并有助于解决第一次迭代后循环退出的问题:

  • “不能通过重新分配进行更改,也不能重新声明”;换个角度考虑。而且,在第一次迭代之后,您似乎已经脱离了循环。这很有效,谢谢,但每次单击都需要它,图像src会一个接一个地更改,这会在第一次单击时更改所有图像。同意,
    const
    在这种情况下有效。我没有意识到它是块范围的,可以在每次迭代中声明。这很有效,谢谢你,但我每次单击都需要它,图像src会一个接一个地更改,这会在第一次单击时更改所有图像。这就是我要找的,谢谢!谢谢你,但我每次点击都需要它,图像src需要一个接一个地更改,每次点击,第一次点击就更改所有图像。@Allcro啊,你的问题不清楚。我会更新的。我的错,对不起:(@Allcro对不起,我正忙着打电话。我知道你已经接受了另一个答案,但其实要简单得多。请看我更新的答案。这也很完美,谢谢你,斯科特!
    $("button").click(function () {
      $("img").each((_, element) => {
        if ($(element).attr("src") != "dsdassdada.jpg") {
          $(element).attr("src", "image1.jpg");
        }
      });
    });