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");
}
});
});