我想将< script>
TAG之间声明的变量传递给iframe TAG中的URL,如下所示:
<代码>&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;答案 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