HTML doc中的Javascript变量范围

时间:2013-08-29 18:53:14

标签: javascript jquery html

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

<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显示在页面正文中,以便我可以看到发生了什么?我认为我的变量范围可能是错误的开始?

4 个答案:

答案 0 :(得分:1)

看起来您正在尝试在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才能找到它。

值得注意的是,ad-hoc向jQuery变量添加函数是不好的形式。尝试制作插件http://learn.jquery.com/plugins/basic-plugin-creation/

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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>

答案 3 :(得分:0)

使用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>

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