在循环中更改 img src 属性值 - jquery
Change img src attribute value in loop - jquery
我有一个带有图像的旋转木马,我希望根据 window 宽度将 src 属性值替换为其他 data-src 属性值。
<div id="mainCarousel">
<img class="img-carousel" src="img/carousel-main-img2.jpg" data-src="img/carousel-main-datasrc-1.jpg" data-srctwo="img/carousel-main-datasrctwo-1.jpg">
<img class="img-carousel" src="img/carousel-main-img3.jpg" data-src="img/carousel-main-datasrc-2.jpg" data-srctwo="img/carousel-main-datasrctwo-2.jpg">
function carouselImages() {
// set window width in a variable
var winWidth = $(window).width();
// set img DOM element in a variable
var imgCarousel = $('#mainCarousel .img-carousel');
// declare empty variable for img 'data-src' attribute
var dataSrc = $();
// declare empty variable for img 'data-srcTwo' attribute
var dataSrcTwo = $();
//set loop which will iterate on each img DOM element
for(var i=0; i<imgCarousel.length; i++) {
// set first width range condition
if(winWidth > 400 && winWidth < 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrc = imgCarousel[i].attr('data-src');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
imgCarousel[i].attr('src', dataSrc);
}
// set second width range condition
else if (winWidth >= 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrcTwo = imgCarousel[i].attr('data-srcTwo');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
imgCarousel[i].attr('src', dataSrcTwo);
}
}
};
$(document).ready(function(){
carouselImages();
});
$(window).resize(function () {
carouselImages();
});
我想要实现的是,当 window 宽度在 401px 和 767px 之间时,图像 src
值被替换为 data-src
值,并且 data-srctwo
window 宽度为 >= 768px
.
时的值
在构建我的功能时,我尽量做到合乎逻辑。但它就是行不通。无论是在缩小屏幕和刷新时,还是在直接调整浏览器大小时,src 属性值都不会改变 window。另外,我收到以下错误消息
imgCarousel[i].attr is not a function
谁能告诉我我的函数背后的逻辑到底出了什么问题;以及为什么我收到错误消息,因为我认为您不一定需要在条件内有一个函数。
您正在使用 jquery 功能,因此不需要 for loop
。使用 each
将帮助您更轻松地通过 $(this)
[将当前元素设置为 src]
imgCarousel.each(function(){
if(winWidth > 400 && winWidth < 768) {
data-src = $(this).attr("data-src");
$(this).attr('src',data-src);
}
// set second width range condition
else if (winWidth >= 768) {
data-srcTwo = $(this).attr("data-srcTwo");
$(this).attr('src',data-srcTwo);
}
});
使用 $(imgCarousel[i])
而不是 imgCarousel[i]
。
imgCarousel[i]
是一个标签,$(imgCarousel[i])
是一个 jquery 对象
在按以下方式使用 $.attr()
函数之前,您必须将 DOM 元素引用转换为 JQuery 对象:
function carouselImages() {
// set window width in a variable
var winWidth = $(window).width();
// set img DOM element in a variable
var imgCarousel = $('#mainCarousel .img-carousel');
// declare empty variable for img 'data-src' attribute
var dataSrc = $();
// declare empty variable for img 'data-srcTwo' attribute
var dataSrcTwo = $();
//set loop which will iterate on each img DOM element
for(var i=0; i<imgCarousel.length; i++) {
// set first width range condition
if(winWidth > 400 && winWidth < 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrc = $(imgCarousel[i]).attr('data-src');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
$(imgCarousel[i]).attr('src', dataSrc);
}
// set second width range condition
else if (winWidth >= 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrcTwo = $(imgCarousel[i]).attr('data-srcTwo');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
$(imgCarousel[i]).attr('src', dataSrcTwo);
}
}
};
$(document).ready(function(){
carouselImages();
});
$(window).resize(function () {
carouselImages();
});
var imgCarousel = $('#mainCarousel .img-carousel');
是匹配元素的数组。它只是 DOM 元素而不是 jquery 对象。因此,当遍历它并应用 attr
时,它会抛出一个错误。
您需要先将其转换为 jquery 对象,然后再对其应用 .attr
方法。
您可以通过以下任一方式引用当前元素
$(imgCarousel[i]).attr('data-src');
我有一个带有图像的旋转木马,我希望根据 window 宽度将 src 属性值替换为其他 data-src 属性值。
<div id="mainCarousel">
<img class="img-carousel" src="img/carousel-main-img2.jpg" data-src="img/carousel-main-datasrc-1.jpg" data-srctwo="img/carousel-main-datasrctwo-1.jpg">
<img class="img-carousel" src="img/carousel-main-img3.jpg" data-src="img/carousel-main-datasrc-2.jpg" data-srctwo="img/carousel-main-datasrctwo-2.jpg">
function carouselImages() {
// set window width in a variable
var winWidth = $(window).width();
// set img DOM element in a variable
var imgCarousel = $('#mainCarousel .img-carousel');
// declare empty variable for img 'data-src' attribute
var dataSrc = $();
// declare empty variable for img 'data-srcTwo' attribute
var dataSrcTwo = $();
//set loop which will iterate on each img DOM element
for(var i=0; i<imgCarousel.length; i++) {
// set first width range condition
if(winWidth > 400 && winWidth < 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrc = imgCarousel[i].attr('data-src');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
imgCarousel[i].attr('src', dataSrc);
}
// set second width range condition
else if (winWidth >= 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrcTwo = imgCarousel[i].attr('data-srcTwo');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
imgCarousel[i].attr('src', dataSrcTwo);
}
}
};
$(document).ready(function(){
carouselImages();
});
$(window).resize(function () {
carouselImages();
});
我想要实现的是,当 window 宽度在 401px 和 767px 之间时,图像 src
值被替换为 data-src
值,并且 data-srctwo
window 宽度为 >= 768px
.
在构建我的功能时,我尽量做到合乎逻辑。但它就是行不通。无论是在缩小屏幕和刷新时,还是在直接调整浏览器大小时,src 属性值都不会改变 window。另外,我收到以下错误消息
imgCarousel[i].attr is not a function
谁能告诉我我的函数背后的逻辑到底出了什么问题;以及为什么我收到错误消息,因为我认为您不一定需要在条件内有一个函数。
您正在使用 jquery 功能,因此不需要 for loop
。使用 each
将帮助您更轻松地通过 $(this)
[将当前元素设置为 src]
imgCarousel.each(function(){
if(winWidth > 400 && winWidth < 768) {
data-src = $(this).attr("data-src");
$(this).attr('src',data-src);
}
// set second width range condition
else if (winWidth >= 768) {
data-srcTwo = $(this).attr("data-srcTwo");
$(this).attr('src',data-srcTwo);
}
});
使用 $(imgCarousel[i])
而不是 imgCarousel[i]
。
imgCarousel[i]
是一个标签,$(imgCarousel[i])
是一个 jquery 对象
在按以下方式使用 $.attr()
函数之前,您必须将 DOM 元素引用转换为 JQuery 对象:
function carouselImages() {
// set window width in a variable
var winWidth = $(window).width();
// set img DOM element in a variable
var imgCarousel = $('#mainCarousel .img-carousel');
// declare empty variable for img 'data-src' attribute
var dataSrc = $();
// declare empty variable for img 'data-srcTwo' attribute
var dataSrcTwo = $();
//set loop which will iterate on each img DOM element
for(var i=0; i<imgCarousel.length; i++) {
// set first width range condition
if(winWidth > 400 && winWidth < 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrc = $(imgCarousel[i]).attr('data-src');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
$(imgCarousel[i]).attr('src', dataSrc);
}
// set second width range condition
else if (winWidth >= 768) {
// if width matches condition, store the value of each DOM element's 'data-src' attribute in previously declared variable
dataSrcTwo = $(imgCarousel[i]).attr('data-srcTwo');
// replace DOM element's 'src' attribute's value with 'data-src' attribute's value
$(imgCarousel[i]).attr('src', dataSrcTwo);
}
}
};
$(document).ready(function(){
carouselImages();
});
$(window).resize(function () {
carouselImages();
});
var imgCarousel = $('#mainCarousel .img-carousel');
是匹配元素的数组。它只是 DOM 元素而不是 jquery 对象。因此,当遍历它并应用 attr
时,它会抛出一个错误。
您需要先将其转换为 jquery 对象,然后再对其应用 .attr
方法。
您可以通过以下任一方式引用当前元素
$(imgCarousel[i]).attr('data-src');