Добавил и тут, браузер выдаёт ошибку на странице, но я не вижу ошибку, помогите? - вопрос №1012099

var data = new Array(); var brush = 'blue'; var s = new String; var x; var y; var i; var left = true;

if (left) { for( i = 0; i < 2048; i++ ) { document.getElementById(i).style.backgroundColor = data[i] } }
else { for( i = 2048; i < 4096; i++) { document.getElementById(i).style.backgroundColor = data[i] } };

for( i = 0; i < 2048; i++) { document.getElementById(i+5000).style.backgroundColor = data[i]; };

for( i = 2048; i < 4096; i++) { document.getElementById(i+10000).style.backgroundColor = data[i]; };



Дополнение автора от 02.04.14 23:47:06

<!-- Смотри комментарии -->

<html><head><title>H</title></head>
<body>
<script type=«text/JavaScript» language=«JavaScript»>

// ....................................................................................................
// Добавил и тут, браузер выдаёт ошибку на странице, но я не вижу ошибку, помогите
var data = new Array(); var brush = 'blue'; var s = new String; var x; var y; var i; var left = true; var second;
var st = new String;
// ....................................................................................................

function selectbrush(color)
{
brush = color;
document.getElementById('bcl').style.backgroundColor = brush;
}

function draw(target)
{
document.getElementById(target).style.backgroundColor = brush;
if (left) { document.getElementById(target+5000).style.backgroundColor = brush }
else { document.getElementById(target+10000).style.backgroundColor = brush };
}

function timer()
{
second += 1;
//document.getElementById('sec').innerHTML = 'Time: ' + second;
//st = '<table cellspacing=0 cellpadding=0><tr>'
//for(i=0;i<second;i++) { st += '<td width=1 height=10 bgColor=blue> </td>' }
//st += '</tr><table>';
st = '';
for(i=0;i<second;i++) { st += '<font style=«color: blue»>*</font>' }
document.getElementById('bar').innerHTML = st;
}

function left()
{
setInterval(timer, 1000);
for( i = 0; i < 2048; i++) { document.getElementById(i).style.backgroundColor = document.getElementById(i+5000).style.backgroundColor };
setInterval(timer, 0);
left = true;
}

function right()
{
setInterval(timer, 1000);
for( i = 0; i < 2048; i++) { document.getElementById(i).style.backgroundColor = document.getElementById(i+10000).style.backgroundColor };
setInterval(timer, 0);
left = false;
}

function start(w, h)
{

if ( w > h ) { w = h } else { h = w };

s = '<table cellspacing=0 cellpadding=0><tr><td>';
s += '<table border=1 cellspacing=0 cellpadding=0><tr><td>';
s += '<table id=mylabel cellspacing=0 cellpadding=0>';
i = 0;
for( y = 0; y < 32; y++ )
{
s += '<tr>';
for( x = 0; x < 64; x++ )
{
s += '<td id=' + i + ' onclick=draw(' + i + ') width=' + w + ' height=' + h + '> </td>'; i += 1;
};
s += '</tr>';
};
s += '</table></td></tr></table></td><td>';

s += '<table border=1 cellspacing=0 cellpadding=0><tr><td>';
s += '<table cellspacing=0 cellpadding=0><tr><td>';
i = 5000;
s += '<table id=left cellspacing=0 cellpadding=0 onclick=left() style=«cursor: hand;»>';
for( y = 0; y < 32; y++ )
{
s += '<tr>';
for( x = 0; x < 64; x++ )
{
s += '<td id=' + i + ' width=1 height=1> </td>'; i += 1;
};
s += '</tr>';
};
s += '</table></td><td>';
i = 10000;
s += '<table id=right cellspacing=0 cellpadding=0 onclick=right() style=«cursor: hand;»>';
for( y = 0; y < 32; y++ )
{
s += '<tr>';
for( x = 0; x < 64; x++ )
{
s += '<td id=' + i + ' width=1 height=1> </td>'; i += 1;
};
s += '</tr>';
};
s+='</table></td></tr></table></td></tr></table>';

s+='<table border=1 cellspacing=0 cellpadding=0 width=60 height=200>';
s+='<tr><td id=«bcl» colspan=2> </td></tr>';
s+='<tr><td id=«bcr» colspan=2> </td></tr>';
//.................................................................................................................
// тут onmouseright=selectbrush(«red»)
s+='<tr><td bgColor=red onclick=selectbrush(«red») onmouserightdown=selectbrush(«red»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=orange onclick=selectbrush(«orange»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=yellow onclick=selectbrush(«yellow»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=green onclick=selectbrush(«green»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=blue onclick=selectbrush(«blue»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=lightblue onclick=selectbrush(«lightblue»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=red onclick=selectbrush(«red»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='<tr><td bgColor=red onclick=selectbrush(«red»)> </td><td bgColor=green onclick=selectbrush(«green»)> </td></tr>';
s+='</table>';
s += '</td></tr></table>';

for( i = 0; i < 4096; i++) { data[i] = 0 };

// ....................................................................................................
// Добавил и тут, браузер выдаёт ошибку на странице, но я не вижу ошибку, помогите
//if (left) { for(i=0;i<2048;i++){ document.getElementById(i).style.backgroundColor = data[i] } }
//else { for(i=2048;i<4096;i++) { document.getElementById(i).style.backgroundColor = data[i] } };

//for( i = 0; i < 2048; i++) { document.getElementById(i+5000).style.backgroundColor = data[i]; };

//for( i = 2048; i < 4096; i++) { document.getElementById(i+10000).style.backgroundColor = data[i]; };
//.....................................................................................................

s += '<span id=«bar»>start</span>';

document.write(s);
}

</script>

<script type=«text/JavaScript» language=«JavaScript»>
start( (document.body.clientWidth-130)/64, (document.body.clientHeight-130)/32 );
setInterval(timer, 1000);
</script>

</body></html>

Лучший ответ по мнению автора

код выглядит весьма сомнительно

1 — Вы создаете массив data, но ни каким образом не инициализируете его значения… но тут же пытаетесь у него получить значения — в лбом языке программирования это должно вызвать ошибку

2 — Вы делаете перебор по довольно большим значениям и выборку по id из dom опираясь на эти значения, даже на 10000+4096 в максимальном варианте. ту даже две проблемы сразу — не факт что страница имеет 14096 элементов… но самое главное — id элемента не является номером, обычно это строка… и не все элементы вообще имеют id

пока что Ваш код обречен на ошибки во всех смыслах

ps примеры id элементов dom на этой странице вопроса http://i.imgur.com/0BWFFhv.png

02.04.14
Лучший ответ по мнению автора

Alexander

Читать ответы
Посмотреть всех экспертов из раздела Технологии > JavaScript,Ajax,HTML
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store