HTML文档中的Javascript变量范围

Javascript variable scope in HTML doc

本文关键字:变量 范围 Javascript 文档 HTML      更新时间:2023-09-26

我正在尝试在iframe中构造一个URL。URL参数在下面的代码中使用jQuery进行解析:

<script type="text/javascript">
$.urlParam = function(name){
  var results = new RegExp('[''?&]' + name + '=([^&#]*)').exec(window.location.href);
  if (!results) { return ''; }
  return results[1] || '';
}
var lidval = $.urlParam('lid');
var cidval = $.urlParam('cid');
var cyidval = $.urlParam('cyid');
</script>

<iframe frameborder="0" scrolling="no" width="100%"  src="http://somerandomhost.com/Portal/index.php?task=nothankyou&lid='+lidval+'&cid='+cidval+'&cyid='+cyidval"></iframe>

我在somerandomhost.com上看不到第三方系统,目前,该系统返回的响应是数据库中不知道该记录。然而,我知道该记录存在,所以我认为问题是URL没有正确构建。如何将URL显示在页面正文中,以便查看发生了什么?我认为我的变量范围一开始可能是错误的?

看起来您正试图在HTML文档中使用javascript变量。您只能在该脚本标记的作用域中使用这些变量。试试这个

<script type="text/javascript">
$.urlParam = function(name){
  var results = new RegExp('[''?&]' + name + '=([^&#]*)').exec(window.location.href);
  if (!results) { return ''; }
  return results[1] || '';
}
var lidval = $.urlParam('lid');
var cidval = $.urlParam('cid');
var cyidval = $.urlParam('cyid');
$('#someFrame').attr('src', "http://somerandomhost.com/Portal/index.php?task=nothankyou&lid="+lidval+"&cid="+cidval+"&cyid="+cyidval);
</script>
<iframe frameborder="0" scrolling="no" width="100%" id="someFrame"></iframe>

您必须将id应用于帧才能找到它。

同样值得注意的是,在jQuery变量中添加特殊函数是一种糟糕的形式http://learn.jquery.com/plugins/basic-plugin-creation/

HTML将无法访问您的javascript变量。您需要使用document.write来构造您的iframe标记。或者尝试jquery以获得方便。

您可以在jquery:中执行此操作

<script type="text/javascript">
$.urlParam = function(name){
  var results = new RegExp('[''?&]' + name + '=([^&#]*)').exec(window.location.href);
  if (!results) { return ''; }
  return results[1] || '';
}
var lidval = $.urlParam('lid');
var cidval = $.urlParam('cid');
var cyidval = $.urlParam('cyid');
//construct url
var iframe_url = 'http://somerandomhost.com/Portal/index.php?task=nothankyou&lid='+lidval+'&cid='+cidval+'&cyid='+cyidval;
jQuery(function($){
 $('#your_frame_id').attr('src', iframe_url);
});
</script>

<iframe frameborder="0" id="your_frame_id" scrolling="no" width="100%"  src=""></iframe>

向iframe添加一个id,并从脚本中设置src。

$( '#myIframe' )[0].src = "http://somerandomhost.com/Portal/index.php?task=nothankyou&lid="+lidval+"&cid="+cidval+"&cyid="+cyidval;

使用JavaScript变量动态编写/打开iframe。这应该能解决你的问题。

使您的代码类似

<script type="text/javascript">
$.urlParam = function(name){
  var results = new RegExp('[''?&]' + name + '=([^&#]*)').exec(window.location.href);
  if (!results) { return ''; }
  return results[1] || '';
}
var lidval = $.urlParam('lid');
var cidval = $.urlParam('cid');
var cyidval = $.urlParam('cyid');
$("iframe").attr(src, 'http://somerandomhost.com/Portal/index.php?task=nothankyou&lid='+lidval+'&cid='+cidval+'&cyid='+cyidval');
</script>

<iframe frameborder="0" scrolling="no" width="100%"  src=""></iframe>

像这样的东西,也许不完全是这样。