【问题标题】:why does innerHTML append a comma为什么innerHTML会附加逗号
【发布时间】:2014-08-04 18:24:45
【问题描述】:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="media/js/jquery.js"></script>
<script>
var table = "";
var example_array = [];

function tablething() {
    index = document.getElementById("location").value;
    value = document.getElementById("input_value").value;
    addRow(index,value);
}

function addRow(index,value){
     var rowBeg = "<tr><td>";
     var rowEnd = "</td></tr>";

     value = rowBeg + value + rowEnd;
     example_array.splice(index,0,value);
     console.log(example_array);
     table.innerHTML = example_array;
     console.log(table.innerHTML);
}

$( document ).ready(function() {
    table = document.getElementById("example");
    example_array = new Array();
});
</script>
</head>
<body>

<table id="example">
</table>

Location: <input type="text" id="location"/>
Value: <input type="text" id="input_value"/>
<button onclick="tablething()">Add</button>

</body>
</html>

控制台中的结果是

Array [ "<tr><td>0</td></tr>" ] dyna_row.html:21
"<tbody><tr><td>0</td></tr></tbody>" dyna_row.html:23
Array [ "<tr><td>0</td></tr>", "<tr><td>1</td></tr>" ] dyna_row.html:21
"<tbody><tr><td>0</td></tr><tr><td>1</td></tr></tbody>," dyna_row.html:23
Array [ "<tr><td>0</td></tr>", "<tr><td>1</td></tr>", "<tr><td>2</td></tr>" ] dyna_row.html:21
"<tbody><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr></tbody>,," dyna_row.html:23
Array [ "<tr><td>0</td></tr>", "<tr><td>1</td></tr>", "<tr><td>2</td></tr>", "<tr><td>3</td></tr>" ] dyna_row.html:21
"<tbody><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr></tbody>,,,"

我的怀疑是

  1. 为什么每次调用 addRow 方法时,这段代码都会在 innerHTML 的末尾添加一个逗号?

  2. example_array.join("") 似乎实现了我想要做的,但是 toString 方法是否也没有返回与 join 方法相同的内容?

【问题讨论】:

  • 因为...数组在字符串化时有逗号?嗯...
  • 不是答案,但你为什么要将数组分配给innerHTML
  • 可能是由于浏览器添加 tbody 的方式,以及两个 标签之间的逗号是无效标记的事实。浏览器通过将逗号移到 tbody 外部来自动更正它。
  • 你应该使用table.innerHTML = example_array.join("");。当浏览器尝试对您的数组进行字符串化时,它会将其转换为“..”、“...”(可能是通过使用不带参数的连接获得“,”作为标准分隔符),这会导致无效的 html,正如@KevinB 所说并产生你得到的输出。
  • @KevinB 你能发布你的 cmets 作为答案吗...?这样我可以接受吗?

标签: javascript html dom


【解决方案1】:

当数组转换为字符串时,它会在值之间添加逗号。

这将在值之间使用空格

table.innerHTML = example_array.join(" ");

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签