Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не работает такой сценарий (https://javascript.ru/forum/misc/12291-pochemu-ne-rabotaet-takojj-scenarijj.html)

spbspidir 10.10.2010 23:19

Почему не работает такой сценарий
 
Вроде всё правильно ввёл, IE8 ошибок не выводит, но и не меняет значение ячеек:((((
<table border="1" id="nomore">
<tr>
<th width="34">z</td>
<th width="47">x</td>
<th width="100">c</td>
</tr>
<tr>
<td>f</td>
<td>g</td>
<td>j</td>
</tr>
<tr>
<td>l</td>
<td>u</td>
<td>y</td>
</tr>
</table>
<script>
var tabObj=document.getElementById("nomore");
var bodyObj=tabObj.firstChild;
var rowObj=bodyObj.rows[1];
var cellObj=rowObj.cells[1];
cellObj.nodeValue="Привет";
</script>

Sweet 10.10.2010 23:36

Во-первых, почему не пользуешься форматированием?
Во-вторых, почему тег <th> закрывается </td>?
В-третьих,
var bodyObj=tabObj.firstChild;
- это явно лишнее.
В-четвертых, используй вместо .nodeValue innerText или innerHTML:
<table border="1" id="nomore">
  <tr>
    <th width="34">z</th>
    <th width="47">x</th>
    <th width="100">c</th>
  </tr>
  <tr>
    <td>f</td>
    <td>g</td>
    <td>j</td>
  </tr>
  <tr>
    <td>l</td>
    <td>u</td>
    <td>y</td>
  </tr>
</table>
<script>
var tabObj = document.getElementById("nomore"),
    rowObj = tabObj.rows[1],
    cellObj = rowObj.cells[1];
cellObj.innerText = "Привет";
</script>

monolithed 10.10.2010 23:53

1. Почему код не отформатирован и в нем присутствуют ошибки?
2. Почему вы решили, что ваш скрипт вообще должен что-то выполнять корректно?

<table border="1" id="table">
<tr><th>a</th><th>b</th><th>c</th></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
</table>
    
<script type="text/javascript">
window.onload = function(){
    var table = document.getElementById('table');
    for(i=0; i < table.rows.length; i++){
        (function(i) {        
            document.onclick = function(){
                for(j=0; j<table.rows[i].cells.length; j++){
                    table.rows[1].cells[0].innerHTML = 'Привет';
                }   
            };
        })(i);
    }
};
</script>

spbspidir 11.10.2010 00:33

Спасибо...Простите за глупые ошибки...!!!
Мне было не совсем понятно почему пример приведённый в книге, не работает.
А почему nodeValue не работает с таблицами?

Sweet 11.10.2010 01:23

Цитата:

Сообщение от spbspidir
А почему nodeValue не работает с таблицами?

А пробовал в гугле поискать, что это вообще такое? Свойство .nodeValue не работает с элементами. Но его можно применять к текстовым узлам или атрибутам:
<table border="1" id="nomore">
  <tr>
    <th width="34">z</th>
    <th width="47">x</th>
    <th width="100">c</th>
  </tr>
  <tr>
    <td>f</td>
    <td>При</td>
    <td>j</td>
  </tr>
  <tr>
    <td>l</td>
    <td>u</td>
    <td>y</td>
  </tr>
</table>
<script>
var tabObj = document.getElementById("nomore"),
    rowObj = tabObj.rows[1],
    cellObj = rowObj.cells[1],
    text = document.createTextNode("");
text.nodeValue = "вет";
cellObj.appendChild(text);
</script>


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