Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическое создание таблицы. Проблема с ИЕ (https://javascript.ru/forum/dom-window/23725-dinamicheskoe-sozdanie-tablicy-problema-s-ie.html)

Rain 03.12.2011 15:23

Динамическое создание таблицы. Проблема с ИЕ
 
Вот "пример" в котором вся суть проблемы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script language="javascript" type="text/javascript">
	
	function DataTable(Rows)
	{
		var table = document.getElementById('data');
		var k = table.rows.length;
		
		for(var i = 0; i < k; i++) table.deleteRow(0);

		for(var i = 0; i < Rows; i++)
		{
			var row = document.createElement("tr");
			table.appendChild(row);
			var td1 = document.createElement("td");
			row.appendChild(td1);
			td1.innerHTML = i;
		}
	}

</script>

</head>
<body>

<select onchange="DataTable(this.value);">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

<table class="data" id="data"></table>

<script language="javascript" type="text/javascript">
	DataTable(5);
</script>

</body>
</html>


В ие table.rows.length возвращает 0 и соответственно таблица не стирается. В чем причина и как это исправить?

Заранее благодарен за помощь.

devote 03.12.2011 16:04

может ие в тег table еще что-то добавил? например тег tbody
откройте средства разработки и посмотрите что он с ним делает до вызова яваскрипт.

ksa 03.12.2011 16:41

Цитата:

Сообщение от devote
например тег tbody

В нём-то всё и дело...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">
	function DataTable(Rows) {
		var table = document.getElementById('data');
		var k = table.rows.length;
		var i, row, td;
		for(i = 0; i < k; i++) table.deleteRow(0);
		var table = document.getElementById('target');
		for(i = 0; i < Rows; i++) {
			row = document.createElement("tr");
			td = document.createElement("td");
			td.innerHTML = i;
			row.appendChild(td);
			table.appendChild(row);
		}
	}
</script>
</head>
<body>
<select onchange="DataTable(this.value);">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<table class="data" id="data">
	<tbody id='target'></tbody>
</table>
<script language="javascript" type="text/javascript">
	DataTable(5);
</script>
</body>
</html>

Rain 04.12.2011 19:44

Всем большое спасибо за помощь.

Andrey_szr 23.09.2012 20:28

Пробую в имеющуюся таблицу добавить строки средствами Javascript, пока не очень получается.
Помогите доработать этот код, указав на ошибки:
function addtable(){
	var table=document.getElementById('tab1');
	var tr21=document.createElement('tr');
	var td21=document.createElement('td');
	var td22=document.createElement('td');
		td21.innerHTML='21';
		td22.innerHTML='22';
		tr21.appendChild(td21);
		tr21.appendChild(td22);
		table.appendChild(tr21);
}

lord2kim 23.09.2012 20:41

Andrey_szr,
<html>
<head>
<script>
function addtable(){
    var table=document.getElementById('tab1');
    var tr21=document.createElement('tr');
    var td21=document.createElement('td');
    var td22=document.createElement('td');
        td21.innerHTML='21';
        td22.innerHTML='22';
        tr21.appendChild(td21);
        tr21.appendChild(td22);
        table.appendChild(tr21);
}
</script>
</head>
<body>
<table id="tab1">
<tr><td>11</td><td>12</td></tr>
</table>
<input type="button" value="add" onClick="addtable()">
</body>
</html>

Andrey_szr 23.09.2012 21:30

нашел у себя ошибку в <head>. спасибо за помощь

Andrey_szr 24.09.2012 09:47

Подскажите есть ли возможность обратиться к элементу (в моем случае через getElementsByTagName('td')) находящемуся в других файлах?
Необходимо выдернуть данные из ячеек файлов 1001.html, 1003.html и 1005.html и поместить в index.html
структура каталога:
folder

├───js
│ body.js
|
│---1001.html
│---1003.html
│---1005.html
│---index.html

ksa 24.09.2012 10:46

Andrey_szr, JS (по большему счету) не работает с файлами...


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