Проблема с «document.write ()» массив изображений в JavaScript - PullRequest
2 голосов
/ 12 декабря 2010

Я пытаюсь написать, используя document.write() изображение в то время из моего массива.Однако он не отображает никаких ...

// *** Temporal variables
    var i = 0;
    var j = 0;
    var x = 0;

    // Create basic linear array
    var ImgArray = []

    // Do the 2D array for each or the linear array slots
    for (i=0; i < 4 ; i++) {
        ImgArray[i] = []
    }

    // Load the images
    x = 0;
    for(i=0; i < 4 ; i++) { 
        for(j=0; j < 4 ; j++) { 
          ImgArray[i][j] = new Image();
          ImgArray[i][j] = "Images/" + x + ".jpg";
          document.write("<img id= " + x + " img src=ImgArray[i][j]  width='120'   height='120'/>");
          x = x + 1;
        }
        document.write("<br>");
    }

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 12 декабря 2010

Похоже, ваш JavaScript не совсем правильный ...

document.write('<img id="' + x + '" src="' + ImgArray[i][j] + '" width="120" height="120"/>');
0 голосов
/ 12 декабря 2010

Похоже, вы пытаетесь выполнить предварительную загрузку изображения, используя new Image(), но затем вы сразу же записываете элемент изображения с тем же src, используя document.write(), поэтому изображение не будет предварительно загружено, и вы получитенет пользы.Я также подозреваю, что вы пропускаете .src в одной строке во внутреннем цикле:

ImgArray[i][j].src = "Images/" + x + ".jpg";

Этот цикл для создания элементов изображения лучше всего выполнять на стороне сервера при генерации HTML, но при условии, что это не такопция, вы можете полностью потерять переменную ImgArray:

x = 0;
for(i=0; i < 4; i++) { 
    for(j=0; j < 4; j++) { 
        document.write("<img id='" + x + "' src='Images/" + x + ".jpg' width='120' height='120'>");
        x = x + 1;
    }
    document.write("<br>");
}
0 голосов
/ 12 декабря 2010

document.write записывает любой вход в местоположение элемента скрипта.Попробуйте вместо этого:

в теле

<div id="imageContainer"></div>

в вашем скрипте, соберите весь вывод в переменную, скажем, contentVariable, а затем

document.getElementById("imageContainer").innerHTML = contentVariable;

* Это плохая практика - использовать document.write и даже innertml для добавления элементов в dom.используйте document.createElement и element.appendChild для ручной работы.

...