2016-01-03 3 views
0

У меня вопрос о динамическом создании строки в существующую таблицу HTML. Прошу прощения, если вопрос кажется глупым, но я новичок в JavaScript. Вот HTML таблица (я не могу изменить любой HTML код здесь):Создать <tr> в таблице без ID, используя JavaScript

Я должен добавить строки с JavaScript, а потому, что я не могу добавить идентификатор таблицы в HTML-коде, это невозможно сделать с помощью insertRow функции(). Я пробовал с этим кодом, но он не работает (даже с getElementsByClassName ('some-tab')). Строки не создаются. Код:

var something = getElementsByTagName('table'); 
 
var tableca = something[0]; 
 

 
for (var i = 1; i < 4; i++) { 
 

 
    var tr = document.createElement('tr'); 
 

 
    var td1 = document.createElement('td'); 
 
    var td2 = document.createElement('td'); 
 

 
    var text1 = document.createTextNode('Text1'); 
 
    var text2 = document.createTextNode('Text2'); 
 

 
    td1.appendChild(text1); 
 
    td2.appendChild(text2); 
 
    tr.appendChild(td1); 
 
    tr.appendChild(td2); 
 

 
    tableca.appendChild(tr); 
 
} 
 
document.body.appendChild(tableca);
<table class="some-tab"> 
 
    <tr> 
 
    <th>Name</th> 
 
    <th>Description</th> 
 
    </tr> 
 
    <tr> 
 
    <td id="Username">Admin</td> 
 
    <td id="Description">STH STH STH!</td> 
 
    </tr> 
 
</table>

Может кто-нибудь помочь мне, пожалуйста? Большое спасибо! : D

+0

вы можете предоставить jsfiddle? – Grundy

+0

@ Grundy - Не нужно направлять людей на сторонний сайт. Stackoverflow построил живые демонстрации для [более года] (https://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/) – Quentin

+0

@Quentin, i но jsfiddle может быть более обычным в некоторых случаях, также, например, plunkr лучше, чем стандартное для углового, и фрагменты с несколькими файлами. – Grundy

ответ

2

Посмотрите на инструменты разработчика вашего браузера.

Uncaught ReferenceError: getElementsByTagName is not defined 

getElementsByTagName является метод document объекта и объектов DOM элементов. Это не глобально.

Просто отредактируйте первую строку кода.

var something = document.getElementsByTagName('table'); 
 
var tableca = something[0]; 
 

 
for (var i = 1; i < 4; i++) { 
 

 
    var tr = document.createElement('tr'); 
 

 
    var td1 = document.createElement('td'); 
 
    var td2 = document.createElement('td'); 
 

 
    var text1 = document.createTextNode('Text1'); 
 
    var text2 = document.createTextNode('Text2'); 
 

 
    td1.appendChild(text1); 
 
    td2.appendChild(text2); 
 
    tr.appendChild(td1); 
 
    tr.appendChild(td2); 
 

 
    tableca.appendChild(tr); 
 
} 
 
document.body.appendChild(tableca);
<table class="some-tab"> 
 
    <tr> 
 
    <th>Name</th> 
 
    <th>Description</th> 
 
    </tr> 
 
    <tr> 
 
    <td id="Username">Admin</td> 
 
    <td id="Description">STH STH STH!</td> 
 
    </tr> 
 
</table>

+0

Это работает, это была моя ошибка. Спасибо! :) – ZPA

1

Это потому, что вы не можете использовать getElementsByTagName или ClassName в одиночку. В целом утверждение

document.getElementsByTagName('TABLE'); 

А потом он работает

+0

все еще не созданы для моей существующей таблицы. Спасибо, в любом случае. – ZPA

+0

Возможно, вам стоит проверить, что ваш скрипт выполняется после вашего html-кода. Ваш узел '