Javascript 为什么.append()会把我的<;选项>;元素?
我对此代码有问题:Javascript 为什么.append()会把我的<;选项>;元素?,javascript,jquery,Javascript,Jquery,我对此代码有问题: $(function(){ function typeHTML() { var types = ['text', 'image', 'select']; var result = '<select>'; for (var i = 0; i < types.length; i++) { result += '<o
$(function(){
function typeHTML() {
var types = ['text', 'image', 'select'];
var result = '<select>';
for (var i = 0; i < types.length; i++) {
result += '<option value="' + types[i] + '">' + types[i] + '</option>';
}
result += '</select>';
return result;
}
for (var i = 0; i < 5; i++) {
$('#my-table').append('<tr><td>' + i + '</td><td><input type="text" value="' + i + '"/></td><td>' + typeHTML() + '</td><td><input type="text"/></td><td><input type="text"/>,<input type="text"/></td></tr>');
}
});
$(函数(){
函数typeHTML(){
变量类型=[“文本”、“图像”、“选择”];
var结果=“”;
对于(变量i=0;i
请参见此处的JSFIDLE:
您可以看到,typeHTML()是一个函数,它构建了一个元素,其中类型[i]作为每个选项的内部文本。但当我附加它时,HTML显示为:
<select>
<option value="text"></option>
text
<option value="image"></option>
image
<option value="select"></option>
select
</select>
文本
形象
选择
其中,应该是选项内部文本的
类型[i]
被移到选项外部。为什么会这样?当我记录要追加的HTML时,它看起来是正确的,所以这个问题似乎发生在append()
调用本身中。我使用的是jQuery 1.9.1。您关闭该选项两次:
result += '<option value="' + types[i] + '"/>' + types[i] + '</option>';
result+=''+类型[i]+'';
因此,将此更改为
result += '<option value="' + types[i] + '">' + types[i] + '</option>';
result+=''+类型[i]+'';
正因为如此,“/>”(小提琴中的第6行)您正在自动关闭元素。这不是有效的HTML。@MilindantWar问题是为什么它会这样结束。@MilindantWar,请阅读question@Yoshi是对的:啊,谁把刀子放在那里的?=)谢谢!