(Это кодовый комментарий, а не ответ)
Pics = new Array();
Переменная Pics
должна быть объявлена перед использованием.Также используйте сокращенную запись []
var Pics = [];
var Top = 16;
for (i = 0; i < Top; i++) {
document.write("<img><img><img><img><br>");
}
Переменная i
объявлена только позже в коде.Это должно быть объявлено в верхней части программы.
function RandomInt(Min, Max) {
RI = Math.floor(Math.random() * (Max - Min + 1)) + Min;
return (RI);
}
Это особенно опасно: переменная RI
не объявлена внутри функции, поэтому она становится неявным глобальным свойством.Этого следует избегать.Кроме того, парены в выражении возврата являются излишними.
function RandomInt(Min, Max) {
return Math.floor(Math.random() * (Max - Min + 1)) + Min;
}
function Shuffle() {
N = RandomInt(0, 1);
this.Image.src = Pics[N];
this.Image.style.left = 220;
}
Опять же, переменная N
должна быть объявлена.Кроме того, почему этот «метод» объявлен вне конструктора ViewerObj
?Либо поместите его внутрь, либо, что еще лучше, добавьте его в объект-прототип конструктора.Таким образом, вместо многих будет только один Shuffle
функциональный объект.
function ViewerObj(Image, Pics, i) {
this.Image = Image;
this.Image.style.left = 800;
this.Pics = Pics;
this.Shuffle = Shuffle;
this.Image.id = "ID" + i;
}
function Randomise() {
var i;
for (i = 0; i < Top; i++) {
Viewers[i].Shuffle();
Viewers[i].Image.style.left = 200;
}
}
Viewers = new Array();
var i;
Как упоминалось выше, переменная i
должна быть объявлена сверху.Также должна быть объявлена переменная Viewers
.
var Viewers = [];
for (i = 0; i < 3; i++) {
Pics[i] = "images/Tree" + (i) + (i + 1) + ".jpg";
}
for (i = 0; i < Top; i++) {
document.images[i].src = "images/Blank.jpg";
document.images[i].style.left = 300;
Viewers[i] = new ViewerObj(document.images[i], Pics, i);
}