我正在通过数组显示图像。我的问题是与功能changeOfferRandom
就是我希望做的,是删除当前图像从它的随机排列,因此不会再出现,然后从随机排列显示另一个图像。如何随机选择一个数组,然后在javaScript中随机选择一个元素?
我是新来这个,所以我不知道都怎么尝试此。我没有将所有这些图像放在一个数组中的原因是因为稍后我将添加一个函数,以仅基于标签显示图像。这些数组基于标签。无论如何,我相信我需要能够识别正在显示的图像。
var data = [];
function importJson(str) {
if (str=="") {
document.getElementById("content").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status == 200){
data = JSON.parse(xmlhttp.response);
alert(xmlhttp.response);
var fullindex = data.clothes.length + data.food.length + data.sport.length;
for (var sport_index = 0; sport_index < data.sport.length; sport_index++) {
var id1 = data.sport[sport_index].ImagesId;
var url1 = data.sport[sport_index].ImagesPath;
var tag1 = data.sport[sport_index].Tag;
}
for (var food_index = 0; food_index < data.food.length; food_index++) {
var id2 = data.food[food_index].ImagesId;
var url2 = data.food[food_index].ImagesPath;
var tag2 = data.food[food_index].Tag;
}
for (var clothes_index = 0; clothes_index < data.clothes.length; clothes_index++) {
var id3 = data.clothes[clothes_index].ImagesId;
var url3 = data.clothes[clothes_index].ImagesPath;
var tag3 = data.clothes[clothes_index].Tag;
}
function firstRandom(){
var possibleImages = [url3, url2, url1];
var offer = possibleImages[(Math.random() * possibleImages.length)|0];
buildImage(offer);
}
firstRandom();
}
}
xmlhttp.open("GET","http://server/~name/folder/many.php");
xmlhttp.responseType = "json";
xmlhttp.send();
function buildImage(imagesrc) {
var img = document.createElement('img');
img.src = imagesrc;
document.getElementById('content').appendChild(img);
}
}
function changeOfferRandom() {
delete data[currentImage]; //not sure how to achieve this.
var allArrays = [url3, url2, url1]; //not sure how to access the full arrays.
var randomO = allArrays[(Math.random() * possibleImages.length)|0];
buildImage(randomO);
}
window.onload = importJson();
xmlhttp.response看起来是这样的:
{"sport":[
{"ImagesId":"34","ImagesPath":"http:\/\/server\/~name\/folder\/images\/24-08-2014-1408868419.png","Tag":"sport"},
{"ImagesId":"30","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824125.png","Tag":"sport"}],
"clothes":[
{"ImagesId":"33","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824179.png","Tag":"clothes"},
{"ImagesId":"32","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824166.png","Tag":"clothes"}],
"food":[
{"ImagesId":"31","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824158.png","Tag":"food"}]
}
你能告诉我们一些关于你的实际问题是什么?你的代码不工作,如果是的话,错误是什么,预期的与实际的行为等? – thriqon 2014-08-29 06:55:53
代码在创建第一个随机图像方面起作用。我现在需要现在创建一个名为changeOfferRandom的代码底部的函数。我需要删除当前报价并显示新的随机报价。这是我的问题。图像加载到数组中并创建第一个随机图像正在工作。 – 2014-08-29 06:59:19
你可以发一个简单的例子来说明'http:// server /〜name/folder/many.php'可能会发回吗? – thriqon 2014-08-29 07:03:00