Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2016, 11:20
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

Вывод изображения на экран.
Здравствуйте, помогите пожалуйста разобраться.Не могу вывести изображение на экран из цикла.
var pole=[
[0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],] ;
for (var i=0;i<6;i++){
for (var j=0;j<10;j++){
if (pole[i][j]==0) {
pole[i][j]=new Image()
pole[i][j].src="trava.jpg"
pole[i][j].width="50"
pole[i][j].style.position="absolute"
pole[i][j].style.left=j*50+"px";
pole[i][j].style.top =i*70+"px";
pole[i][j].onload=function(){document.body.appendChild(pole[i][j])// не работает.
}}}}
pole[0][0].onload=function(){document.body.appendChild(pole[0][0])}// Работает
pole[5][9].onload=function(){document.body.appendChild(pole[5][9])}//работает


почему-то строка
pole[i][j].onload=function(){document.body.appendChild(pole[i][j])
в цикле не срабатывает. А та же строка вне цикла работает. В моём примере рисуется только верхний левый и нижний правый сегмент игрового поля.
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2016, 16:41
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

Сообщение от Rise Посмотреть сообщение
DlinniyZmey, pole - массивы чисел, числа это не переменные, а ты с ними обращаешься как с переменными, это не будет работать и вне цикла, получается так 0=new Image() 0.src="trava.jpg" 0.onload= и тд.
Но ведь вне цикла работает...
даже если вне цикла сделать так
var  i=2; var j=2;
pole[i][j].onload=function(){document.body.appendChild(pole[i][j])}
то нарисуется поле 3.3...

Может быть подскажите , как сделать так , чтобы работало..? Просто я тут вообще в тупике. В идеале хочу сделать, чтобы прорисовка всех полей шла плавно через jQery , но пока даже так не могу вывести.
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2016, 18:27
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

выдаёт 60 [object HTMLImageElement] через запятую.
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2016, 18:30
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

Разумеется это после цикла. Цикл отрабатывает, превращает нулики-числа в обьекты, но выводить их на экран не хочет. А вот сразу после цикла "в ручную" выводит каждый конкретный элемент.
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2016, 19:05
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

Сообщение от Rise Посмотреть сообщение
DlinniyZmey, а ну да че та меня переклинило)) в общем .onload должен идти по коду перед .src
так?
<html>
<script>
var pole=[
[0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],] ;
for (var i=0;i<6;i++){
for (var j=0;j<10;j++){
if (pole[i][j]==0) {
pole[i][j]=new Image()
pole[i][j].onload=function(){document.body.appendChild(pole[i][j])}// не работает.
pole[i][j].src="trava.jpg"
pole[i][j].width="50"
pole[i][j].style.position="absolute"
pole[i][j].style.left=j*50+"px";
pole[i][j].style.top =i*70+"px";

}}}
pole[0][0].onload=function(){document.body.appendChild(pole[0][0])}//  Работает
pole[5][9].onload=function(){document.body.appendChild(pole[5][9])}//  работает


Так не работает вообще. Даже пара сегментов внизу кода (0,0 и 5.9) не рисуются.

Последний раз редактировалось DlinniyZmey, 26.11.2016 в 19:14.
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2016, 19:12
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

нет, пара рисуется, просто нужно было фигурную скобку перенести вслед за строкой. Сейчас исправлю.
Ответить с цитированием
  #7 (permalink)  
Старый 27.11.2016, 07:06
Интересующийся
Отправить личное сообщение для DlinniyZmey Посмотреть профиль Найти все сообщения от DlinniyZmey
 
Регистрация: 07.08.2016
Сообщений: 14

Сообщение от Rise Посмотреть сообщение
DlinniyZmey,
pole[i][j].onload=function(){document.body.appendChild(this)}
Спасибо!!!! Так и не понял, что это было, но теперь всё работает!!!!
Ответить с цитированием
  #8 (permalink)  
Старый 28.11.2016, 10:57
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

DlinniyZmey,
что-то у вас с onload больно мудрено...
<script>
window.onload = function() {
var pole=[
[0,0,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],] ;
for (var i=0;i<6;i++){
for (var j=0;j<10;j++){
if (pole[i][j]==0) {
pole[i][j]=new Image()
pole[i][j].src="http://javascript.ru/cat/list/mobile.jpg"
pole[i][j].width="50"
pole[i][j].style.position="absolute"
pole[i][j].style.left=j*50+"px";
pole[i][j].style.top =i*70+"px";
document.body.appendChild(pole[i][j])//  работает.
}}}}
</script>
<body></body>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение символа и его вывод на экран, вся цепочка процесса FanAizu Оффтопик 1 21.03.2015 01:58
Вывод миниатюр из большого изображения. AIR Общие вопросы Javascript 9 26.04.2014 22:02
Вывод данных парсинга на экран. SpiritAbsolute Общие вопросы Javascript 1 18.12.2013 17:39
Вывод изображения по будним дням DeeMCee Элементы интерфейса 4 17.07.2013 11:13
Вывод и обновления значений на экран. -Aleks- Events/DOM/Window 10 09.04.2011 13:36