Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用DOM在不使用.innerHTML的情况下设置HTML表中的值?_Javascript_Dom - Fatal编程技术网

Javascript 如何使用DOM在不使用.innerHTML的情况下设置HTML表中的值?

Javascript 如何使用DOM在不使用.innerHTML的情况下设置HTML表中的值?,javascript,dom,Javascript,Dom,我最近在CodeReviewStackExchange上发布了一些代码 我的代码将用JavaScript中对象的值填充HTML表 在我收到的答复中,有人建议我使用DOM向表中添加行,而不使用.innerHTML或jQuery。我很想这么做,但我不知道怎么做 我的代码如下所示: var html = ... // code to get html $(tbody).html(html); 如何在不使用innerHTML或jQuery的情况下将变量html中的行放入我的表体。如果您有一个html

我最近在CodeReviewStackExchange上发布了一些代码

我的代码将用JavaScript中对象的值填充HTML表

在我收到的答复中,有人建议我使用DOM向表中添加行,而不使用.innerHTML或jQuery。我很想这么做,但我不知道怎么做

我的代码如下所示:

var html = ... // code to get html
$(tbody).html(html);

如何在不使用innerHTML或jQuery的情况下将变量
html
中的行放入我的表体。

如果您有一个html字符串,您不希望自己像Inerdial在注释中指出的那样解析它。。让浏览器使用innerHTML/jQuery为您解析它

我将向您展示如何进行普通DOM操作:

var thediv = document.createElement('DIV');

thediv.style.backgroundColor = 'white';
thediv.appendChild(document.createTextNode('some text'));

document.getElementById('someElement').appendChild(thediv);
这是最基本的,您可以创建表和表行,并以这种方式插入它们

为什么不使用jQuery或innerHTML是另一个问题

编辑:向div添加了一些文本


谢谢

如果你有一个HTML字符串,你不想像Ineradial在评论中指出的那样自己解析它。。让浏览器使用innerHTML/jQuery为您解析它

我将向您展示如何进行普通DOM操作:

var thediv = document.createElement('DIV');

thediv.style.backgroundColor = 'white';
thediv.appendChild(document.createTextNode('some text'));

document.getElementById('someElement').appendChild(thediv);
这是最基本的,您可以创建表和表行,并以这种方式插入它们

为什么不使用jQuery或innerHTML是另一个问题

编辑:向div添加了一些文本


谢谢

如果您使用您正在尝试的方法,似乎:

var html = '<tr><td>This is a div</td></tr>';
$(tbody).html(html);
当然,这会将一个空的
td
附加到
tr
并将其附加到
tbody
。要在单元格中放置内容,您仍然必须使用
innerHTML

var cell = document.createElement('td');
cell.innerHTML = "This is text inside of the created 'td' DOM node.";
var row = document.createElement('tr');
var tbody = document.getElementsByTagName('tbody')[0];

row.appendChild(cell);
tbody.appendChild(row);

使用jQuery,可以将其压缩为:

var cell = $('<td />').text("This is text inside of the created 'td' DOM node.");
var row = $('<tr />');
var tbody = $('tbody:first');

row.append(cell).appendTo(tbody);
var cell=$('').text(“这是创建的'td'DOM节点内的文本。”);
变量行=$('');
var tbody=$('tbody:first');
行.append(单元格).appendTo(tbody);


一个链接,指向各种方法的比较(“香草”JavaScript与jQuery),。

如果您使用您正在尝试的方法:

var html = '<tr><td>This is a div</td></tr>';
$(tbody).html(html);
当然,这会将一个空的
td
附加到
tr
并将其附加到
tbody
。要在单元格中放置内容,您仍然必须使用
innerHTML

var cell = document.createElement('td');
cell.innerHTML = "This is text inside of the created 'td' DOM node.";
var row = document.createElement('tr');
var tbody = document.getElementsByTagName('tbody')[0];

row.appendChild(cell);
tbody.appendChild(row);

使用jQuery,可以将其压缩为:

var cell = $('<td />').text("This is text inside of the created 'td' DOM node.");
var row = $('<tr />');
var tbody = $('tbody:first');

row.append(cell).appendTo(tbody);
var cell=$('').text(“这是创建的'td'DOM节点内的文本。”);
变量行=$('');
var tbody=$('tbody:first');
行.append(单元格).appendTo(tbody);


一个链接,用于比较各种方法(“香草”JavaScript与jQuery),

我认为建议您在将文本字符串内容放置到元素中(既可以是预先存在的,也可以是动态创建的)时使用
.innerText
而不是
.innerHTML
。这样做更安全。原因是:如果在检索内容的过程中,您得到一个字符串,其中包含类似“
//do some bad
”的内容,那么当使用
.innerHTML
将该潜在危险的脚本附加到DOM时,将执行该脚本。但是,如果使用
.innerText
,它将作为字符串放置在DOM中,而不是作为要运行的脚本进行计算

我认为建议可能是在将文本字符串内容放置到元素中(既可以是预先存在的,也可以是动态创建的)时使用
.innerText
而不是
.innerHTML
。这样做更安全。原因是:如果在检索内容的过程中,您得到一个字符串,其中包含类似“
//do some bad
”的内容,那么当使用
.innerHTML
将该潜在危险的脚本附加到DOM时,将执行该脚本。但是,如果使用
.innerText
,它将作为字符串放置在DOM中,而不是作为要运行的脚本进行计算

“获取HTML的代码”很重要。DOM操作的要点是,您不需要预先构建一个大的HTML字符串,而是逐个添加几个较小的元素(如行)。如果你因为其他原因不得不提前构建一个大的HTML字符串,那么再拆分它就没有意义了,“获取HTML的代码”是很重要的。DOM操作的要点是,您不需要预先构建一个大的HTML字符串,而是逐个添加几个较小的元素(如行)。如果出于其他原因,您必须提前构建一个大的HTML字符串,那么再次拆分它是没有意义的。我已经编写了与您描述的类似的代码,它基本上是有效的,但有一个问题。当我编写
cell.setAttribute('class','evenRow')
时,类对行的应用似乎没有反映在我的文档中。请改用:
cell.className=“evenRow”如果没有看到您的代码,我无法解释代码不起作用的原因。我编写了与您描述的代码类似的代码,并且大多数代码都能起作用,但有一个问题。当我编写
cell.setAttribute('class','evenRow')
时,类对行的应用似乎没有反映在我的文档中。请改用:
cell.className=“evenRow”如果没有看到您的代码,我无法提供有关代码不工作原因的见解。