将变量从<script>传递给HTML代码?

时间:2016-02-25 14:12:54

标签: javascript html

我想将&lt; script&gt; TAG之间声明的变量传递给iframe TAG中的URL,如下所示:

&#xA;&#xA;
 <代码>&LT;脚本&GT;&#XA; var1 = 1;&#xA;&lt; / script&gt;&#xA;&#xA;&lt; iframe src =“http:// link_to_site?param = var1&gt;&#xA;  
& #xA;&#xA;

但这不起作用。是否可以这样做,我该怎么做?

&#xA;&#xA;

谢谢

&# XA;

2 个答案:

答案 0 :(得分:3)

首先,您需要一种方法来识别JavaScript代码中的目标元素。例如,为元素指定id属性:

<iframe id="myIframe" />

(当然还有其他方法来识别元素。可以构建相当复杂的查询来识别整个DOM中的特定元素。但至少对于这个例子,id是一种特别简单的方法。)

然后在您的JavaScript代码中,您将获得对该元素的引用并设置其src属性:

var var1 = 1;
document.getElementById('myIframe').src = 'http://link_to_site?param=' + var1;

需要注意的一点是,此代码需要在页面上存在该元素后执行。如果它在页面上的该元素上方运行,那么该元素仍然存在且getElementById()将不返回任何内容。

&#34;后&#34;可能意味着它立即运行但存在&#34;更低&#34;在页面上比元素。或者它可能意味着代码放在页面的任何位置但实际上不会执行,直到稍后的时间,例如在事件处理程序中。

答案 1 :(得分:1)

* FYI-很抱歉,但接受的答案实际上并不起作用。参见下文。 *

我建议你使用jQuery JS库来协助你的任务。它规范了JS环境,因此您不必担心用户使用的浏览器。

它还可以更轻松地完成一些简单的任务,例如获取特定元素等。

以下代码显示了在页面加载完成后如何动态创建iFrame。这很重要因为JS同步运行:换句话说,如果你为特定元素编写JS,但该元素在页面上尚不存在,那么JS将失败。

将代码包装在:

$(document).ready(function(){})

确保在执行JS之前页面将完成加载。

<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>

<body>

</body>

<script type="text/javascript">
    var1 = 1;
    $(document).ready(function(){
        var theiFrame = '<iframe src="http://link_to_site?param=' + var1 + '">';
        $('body').append(theiFrame);    
    })
</script>

iFrames有点奇怪,因为它们弄乱了文档的“onload”事件。这是将iFrame动态添加到DOM而不是将其添加为HTML标记的另一个原因。阅读这篇文章了解更多信息:

http://www.aaronpeters.nl/blog/iframe-loading-techniques-performance