Перебор большого числа ячеек
Вложений: 1
Здраствуйте. У меня вот какая проблема:
Есть таблица 20х20 (400 ячеек), каждая ячейка имеет уникальный id-номер (начиная с 0101 и заканчивая 2020). Мне необходимо каждой ячейке присвоить случайно один из 4 цветов. Написал небольшой скриптик, который должен это делать. Но почему-то он перестает работать на 198 (примерно :)) ячейке (имеет id='1010') (ее уже не раскрашивает) и дальше не раскрашивает их. Не подскажете, в чем дело? Проверяю в двух браузерах: IE8 и Google Chrome 2. Нигде не работает :( <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"> <head> <title>Волчий остров</title> <meta http-equiv="content-type"content="text/html;charset=utf-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <script type="text/javascript"> pusto = "black" krolik = "green" volk = "yellow" volchica = "red" function zaselenie() { var tr = 1 var td = 1 for(i=1;i<=400;i++) { if(td<=9) { tdForZas = "0" + td } else { tdForZas = td } if(tr<=9) { trForZas = "0" + tr } else { trForZas = tr } jivotnoe = Math.floor(Math.random() * 4) if(jivotnoe == 0) document.getElementById(trForZas + tdForZas).style.backgroundColor = pusto if(jivotnoe == 1) document.getElementById(trForZas + tdForZas).style.backgroundColor = krolik if(jivotnoe == 2) document.getElementById(trForZas + tdForZas).style.backgroundColor = volk if(jivotnoe == 3) document.getElementById(trForZas + tdForZas).style.backgroundColor = volchica td++ if(td>20) { td = 1 tr++ } } } </script> </head> <body onload="zaselenie()"> <table cellspacing="0"> <tr> <td id='0101'></td> <td id='0102'></td> <td id='0103'></td> <td id='0104'></td> <td id='0105'></td> <td id='0106'></td> <td id='0107'></td> <td id='0108'></td> <td id='0109'></td> <td id='0110'></td> <td id='0111'></td> <td id='0112'></td> <td id='0113'></td> <td id='0114'></td> <td id='0115'></td> <td id='0116'></td> <td id='0117'></td> <td id='0118'></td> <td id='0119'></td> <td id='0120'></td> </tr> ........................... <!-- Здесь пропускаю, т.к. очень длинно. По аналогии идет до id='1920' --> <tr> <td id='2001'></td> <td id='2002'></td> <td id='2003'></td> <td id='2004'></td> <td id='2005'></td> <td id='2006'></td> <td id='2007'></td> <td id='2008'></td> <td id='2009'></td> <td id='2010'></td> <td id='2011'></td> <td id='2012'></td> <td id='2013'></td> <td id='2014'></td> <td id='2015'></td> <td id='2016'></td> <td id='2017'></td> <td id='2018'></td> <td id='2019'></td> <td id='2020'></td> </tr> </table> </body> </html> Приложил в аттаче html+css. Спасибо за помощь! ЗЫ Извините, если уже был похожий вопрос - не нашел. |
а если написать
... jivotnoe = Math.floor(Math.random() * 4) console.log(trForZas + tdForZas); if(jivotnoe == 0) document.getElementById(trForZas + tdForZas).style.backgroundColor = pusto ... то что пишется в консоли firebug? |
Не знаю, что там пишется ))) Нету у меня такого. Отладка Javascript в Хроме пишет это:
.................................................. .... if(jivotnoe == 0) document.getElementById(trForZas + tdForZas).style.backgroundColor = "black" Uncaught TypeError: Cannot read property 'style' of null if(jivotnoe == 1) document.getElementById(trForZas + tdForZas).style.backgroundColor = "green" .................................................. .... |
Цитата:
Цитата:
|
А это имеет значение? Ведь я с ними никаких операций не провожу. И как мне объявить их строкой тогда и передать им значение из int в string?
UPD До меня кажется доходит :) Может JS воспринимать это: "trForZas + tdForZas" как сложение чисел а не как слияние в одно? И как это исправить тогда? UPD2 ЕЕЕЕ!!! Я сделал это! )) Вот исправление: if(td<=9) { tdForZas = "0" + td } else { tdForZas = "" + td } if(tr<=9) { trForZas = "0" + tr } else { trForZas = "" + tr } Добавление пустой строки в ELSE. Спасибо всем за помощь )) |
Самое простое вместо
if(td<=9) { tdForZas = "0" + td } else { tdForZas = td } tdForZas = (td < 10 ? '0' : '') + td; |
Не забываем, что айдишки не должны начинаться с числа...
|
ZoNT
Я искал правила для id - не нашел. Просто если будет не только число, то будет неудобно. А так браузеры понимают :) |
Цитата:
|
Kolyaj
IE8 и Chrome. |
Часовой пояс GMT +3, время: 13:01. |