Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает кнопка (https://javascript.ru/forum/misc/29052-ne-rabotaet-knopka.html)

Hekumok 13.06.2012 11:33

Не работает кнопка
 
есть такой скрипт (см. ниже), при нажатии на кнопку запрашивает кол-во столбцов и ячеек, создает таблицу и кнопку, при нажатии на которую должен меняться фон таблицы, но фон не меняется. Почему? Как исправить?!
<html><head>
<meta http-equiv="Content-Type" Content="text/html; Charset=Unicode">
<meta http-equiv="Content-Language" Content="ru">
<title>Generate table</title>
</head><body>
<center><br>
<input type="button" onclick="tab()" value="Создать таблицу">
<script>
function tab() {
var column = +prompt ('Введите кол-во колонок', '5') ;
var cell = +prompt ('Введите кол-во ячеек', '50') ;
document.write('<br><br><input type="button" onclick="changeTableBgColor()" value="Сменить заливку"><br><br>') ;
document.write('<center><br><table rules="all" style="border: #000 1px solid" cellpadding="10" id="tab"><tr><td align="center" valign="middle">') ;
for (var i = 1; i <= cell; i++) {
document.write(i+'</td>') ;
if (i%column==0) document.write('</tr>') ;
if (i==cell) break ;
if (i%column==0) document.write('<tr>') ;
document.write('<td align="center" valign="middle">') ;
} ;
if (cell%column!=0) {
for (var a = cell; a%column!=0; a++) {
document.write('<td>&nbsp;</td>') ;
} ;
} ;
document.write('</tr></table></center>') ;
} ;
function changeTableBgColor() {
document.getElementById('tab').style.backgroundColor='#0f0' ;
} ;
</script>
</center></body></html>

walik 13.06.2012 11:50

Меняется нормально фон, на зеленый

Hekumok 13.06.2012 11:55

Цитата:

Сообщение от walik (Сообщение 181094)
Меняется нормально фон, на зеленый

О.о У меня нифига не меняет =(

Hekumok 13.06.2012 12:14

walik, а ты в каком браузе смотрел?

Deff 13.06.2012 13:54

Тут была по случаю уже была заготовка
<style>
#Table-container table,
#Table-container table td{
  border:1px inset #716F64;
  /*border-collapse:collapse;*/
  border-spacing: 1px;
}
</style>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<div id=Table-container></div>
<br />
<br />
<script type="text/javascript">
 var colorTable="#80FF80";
 function ChangeColor (){
   $("#Table-container table td").css({"background-color":""+colorTable+""})
 }
</script>
<button style="display:none" id="Chang" type="button" onclick="ChangeColor()">Заливка</button>
<br />
<br />

<!-- Генератор таблиц -->
<h4 style='cursor:hand;cursor:pointer;' onclick="$('#myr-myr').toggle()"><img src="http://savepic.net/1038920.gif" alt="Генератор таблиц" style="vertical-align:middle">  <u>Cоздать таблицу</u></h4>
<table id="myr-myr" width=300 style="display:none"><tr>
    <td>строк: <input class=rows maxlength=3 size=3 value=1 name=rows></td>
    <td>ячеек: <input class=cols maxlength=4 size=3 value=1 name=cols></td>
    <td colspan=4><a href="http://forum.mybb.ru//viewtopic.php?pid=668844#p668844" target=_blank><b></b></a><br>
    <button id="tableCreate" type="button">Cоздать</button></td></tr></table>
<script language=JavaScript> function setTable(){
var Ntd,Nstr,i=0,j=0,tbl="";var tblz="", TDstrStart='<td>ячейка ',TDstrEnd='</td>';
Nstr=$("#myr-myr .rows").val();Ntd=$("#myr-myr .cols").val();
for(j=0; j<Nstr; j++){tbl='<tr>'+tbl;for (i=0; i<Ntd; i++){NumTd=Ntd*j+i;tbl+=TDstrStart+(NumTd+1)+TDstrEnd};
tbl+="</tr>";tblz+=tbl;tbl="";};tbl='<table>'+tblz+'</table>';$("#Table-container").prepend(tbl);$("#Chang").show();}
$("#tableCreate").click(function(){setTable();})</script>

Hekumok 13.06.2012 14:11

Но а почему кнопка в моем коде не работает?

Deff 13.06.2012 14:27

Цитата:

Сообщение от Hekumok
Но а почему кнопка в моем коде не работает?

Команда document.write ,поскольку выдается при полностью загруженной странице - не валидна - документ создался криво
нун делать через append Child

lord2kim 13.06.2012 16:37

можно оставить и в таком варианте, но только нужно функцию changeTableBgColor() также выводить на страницу как и всю таблицу
document.write('<script>function changeTableBgColor() { document.getElementById("tab").style.backgroundColor="#0f0" ; } ;<\/script>');

или можно выводить таблицу с помощью свойства innerHTML в div какой-нибудь, если не использовать DOM

Джэксон 13.06.2012 18:26

Маленький совет. Когда вызываете функцию, ставьте точку с запятой. Например: <input type="button" onclick="changeTableBgColor();" value="Сменить заливку">. Может логать из-за того, что вы не поставили данный символ (;).

Hekumok 13.06.2012 18:38

Цитата:

Сообщение от Deff (Сообщение 181112)
Команда document.write ,поскольку выдается при полностью загруженной странице - не валидна - документ создался криво
нун делать через append Child

Deff, пасиб, но можно, плиз, пример, а то я не понимаю как с appendChild


Часовой пояс GMT +3, время: 06:16.