jquery - 在.html()中分配变量

时间:2011-11-02 11:11:24

标签: javascript jquery iframe

i++;   
 $("#test").html("<iframe id='i' src='arr[0]'></iframe>");  

我想将数组的值分配给iframe源,如下所示。但这不起作用。这怎么可能?感谢

4 个答案:

答案 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]"而不是这些变量的