i++;
$("#test").html("<iframe id='i' src='arr[0]'></iframe>");
我想将数组的值分配给iframe源,如下所示。但这不起作用。这怎么可能?感谢
答案 0 :(得分:3)
$("#test").html("<iframe id='" + i + "' src='" + arr[0] + "'></iframe>");
答案 1 :(得分:2)
您需要使用连接:
$("#test").html("<iframe id=\"" + i + "\" src=\"" + arr[0] + "\"></iframe>");
已编辑以匹配更新的问题
答案 2 :(得分:2)
为什么您的代码无法按预期运行:
$("#test").html("<iframe id='i' src='arr[0]'></iframe>");
生成html输出:
<div id="test">
<iframe id='i' src='arr[0]'></iframe>
</div>
您的变量实际上是以文字输出的,因为您没有使用任何转义/连接(请参阅this article获取JS字符串101)。
如何使其发挥作用
虽然其他答案都是正确的,但始终对字符串使用单引号会使HTML连接更有趣(因为属性值通常应该是双引号):
i++;
$("#test").html('<iframe id="' + i + '" src="' + arr[0] + '"></iframe>');
您可以采取哪些措施让您的工作更轻松:
如果你只需要连接一次就可能有点过分了。从长远来看,当你必须在字符串中插入值时,this approach by @Zippoxer会让你的生活更轻松:
String.prototype.format = function() {
var formatted = this;
for(arg in arguments) {
formatted = formatted.replace("{" + arg + "}", arguments[arg]);
}
return formatted;
};
在您的情况下使用:
$("#test").html('<iframe id="{0}" src="{1}"></iframe>'.format(i, arr[0]));
答案 3 :(得分:1)
试试这个......
$("#test").html("<iframe id='" + i + "' src='" + arr[0] + "'></iframe>");
您使用$("#test").html("<iframe id='i' src='arr[0]'></iframe>");
正在做的是将id
设置为文字字符 "i"
并将src
设置为文字字符串 "arr[0]"
而不是这些变量的值。