JQuery 的多个滑块和数组
Multiple sliders with JQuery with arrays
我正在尝试构建一个滑块,它可以根据在地图上单击的区域更改图像。我想用数组在js文件中存储图像,而不是在HTML中列出它们。
然而,控制台报告“imageArray[imageIndex]:1 GET http://localhost:8000/imageArray[imageIndex] 404 (File not found)”
HTML
<div class="container">
<img id="mainImage" src="Photos/OG/P1000609.JPG" style="width:100%">
<button onClick="changeImage()">next</button>
JQuery
var imageArray = ["Photos/OG/P1000389.jpg", "Photos/OG/P1000409.jpg","Photos/OG/P1000589.jpg"];
var imageIndex =0;
function changeImage(){
$("#mainImage").attr("src", "imageArray[imageIndex]");
imageIndex ++;
sliderLenght = imageArray.lenght;
if (imageIndex> sliderLenght) {imageIndex = 0}
};
function changeArray(e){
imageArray = e
}
var region1Array= ["Photos/OG/P1000412.jpg", "Photos/OG/P1000414.jpg"];
$("#region1").click(changeArray(region1Array));
我尝试替换图像和文件夹,但它不起作用。有没有办法让它使用数组工作,或者甚至只是找到这个数组?
由于您的图像路径存储在数组 imageArray
中,您应该直接将其分配给 attr()
。不要用引号或双引号括起来。
除此之外,JavaScript数组长度应该是array.length
,但是你的代码写错了lenght
。
在下面的代码片段中,我更改了机制,首先响应点击更改索引,然后将 imageArray
的当前索引(更新后)的元素分配给 src
属性img
元素。
var imageArray = ["https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg", "https://media.wired.com/photos/5926db217034dc5f91becd6b/master/w_2560%2Cc_limit/so-logo-s.jpg"];
var imageIndex =0;
function changeImage(){
var sliderLenght = imageArray.length;
if (imageIndex < sliderLenght - 1) {
imageIndex++;
} else imageIndex = 0;
$("#mainImage").attr("src", imageArray[imageIndex]);
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<img id="mainImage" src="https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg" style="width:100%">
<button onClick="changeImage()">next</button>
</div>
除此之外,您可以通过删除 button
上的 onClick
属性并在 Javascript
上添加点击事件侦听器来改进代码
var imageArray = ["https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg", "https://media.wired.com/photos/5926db217034dc5f91becd6b/master/w_2560%2Cc_limit/so-logo-s.jpg"];
var imageIndex =0;
$('#button').click(() => {
var sliderLenght = imageArray.length;
if (imageIndex < sliderLenght - 1) {
imageIndex++;
} else imageIndex = 0;
$("#mainImage").attr("src", imageArray[imageIndex]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<img id="mainImage" src="https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg" style="width:100%">
<button id="button">next</button>
</div>
我正在尝试构建一个滑块,它可以根据在地图上单击的区域更改图像。我想用数组在js文件中存储图像,而不是在HTML中列出它们。 然而,控制台报告“imageArray[imageIndex]:1 GET http://localhost:8000/imageArray[imageIndex] 404 (File not found)”
HTML
<div class="container">
<img id="mainImage" src="Photos/OG/P1000609.JPG" style="width:100%">
<button onClick="changeImage()">next</button>
JQuery
var imageArray = ["Photos/OG/P1000389.jpg", "Photos/OG/P1000409.jpg","Photos/OG/P1000589.jpg"];
var imageIndex =0;
function changeImage(){
$("#mainImage").attr("src", "imageArray[imageIndex]");
imageIndex ++;
sliderLenght = imageArray.lenght;
if (imageIndex> sliderLenght) {imageIndex = 0}
};
function changeArray(e){
imageArray = e
}
var region1Array= ["Photos/OG/P1000412.jpg", "Photos/OG/P1000414.jpg"];
$("#region1").click(changeArray(region1Array));
我尝试替换图像和文件夹,但它不起作用。有没有办法让它使用数组工作,或者甚至只是找到这个数组?
由于您的图像路径存储在数组 imageArray
中,您应该直接将其分配给 attr()
。不要用引号或双引号括起来。
除此之外,JavaScript数组长度应该是array.length
,但是你的代码写错了lenght
。
在下面的代码片段中,我更改了机制,首先响应点击更改索引,然后将 imageArray
的当前索引(更新后)的元素分配给 src
属性img
元素。
var imageArray = ["https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg", "https://media.wired.com/photos/5926db217034dc5f91becd6b/master/w_2560%2Cc_limit/so-logo-s.jpg"];
var imageIndex =0;
function changeImage(){
var sliderLenght = imageArray.length;
if (imageIndex < sliderLenght - 1) {
imageIndex++;
} else imageIndex = 0;
$("#mainImage").attr("src", imageArray[imageIndex]);
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<img id="mainImage" src="https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg" style="width:100%">
<button onClick="changeImage()">next</button>
</div>
除此之外,您可以通过删除 button
上的 onClick
属性并在 Javascript
var imageArray = ["https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg", "https://media.wired.com/photos/5926db217034dc5f91becd6b/master/w_2560%2Cc_limit/so-logo-s.jpg"];
var imageIndex =0;
$('#button').click(() => {
var sliderLenght = imageArray.length;
if (imageIndex < sliderLenght - 1) {
imageIndex++;
} else imageIndex = 0;
$("#mainImage").attr("src", imageArray[imageIndex]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<img id="mainImage" src="https://i1.sndcdn.com/avatars-000708374642-k6d7gm-t500x500.jpg" style="width:100%">
<button id="button">next</button>
</div>