var xingming='CK'; var nianling='30'; var a=100; var f=function(){alert(a)}; window.location.href="http://127.0.0.1/b.html?xingming="+xingming+"&nianling="+nianling+"&f="+f;
b.html:
function Request(strName){ var strHref = document.location.href; var intPos = strHref.indexOf("?"); var strRight = strHref.substr(intPos + 1); var arrTmp = strRight.split("&"); for(var i = 0; i < arrTmp.length; i++ ) { var arrTemp = arrTmp[i].split("="); if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1]; } return 0; }
var name=Request("xingming"); var f=Request("f"); alert(name) f()
现在不清楚怎么处理这个f, 有谁用过这个吗?
12 个解决方案
#1
function Request(strName){ var strHref = document.location.href;//当前url var intPos = strHref.indexOf("?");//得到第一个?的位置 var strRight = strHref.substr(intPos + 1);//截取url中?的位置 var arrTmp = strRight.split("&");//把?后的字符串按照&进行切割 for(var i = 0; i < arrTmp.length; i++ ) {//遍历&切割后的数组 var arrTemp = arrTmp[i].split("=");//把当前值按照=切割, 比如 a=1 if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];//如果当前的键等于strName,返回当前值 } return 0; }
#2
var strRight = strHref.substr(intPos + 1);//截取url中?的后的字符串
#3
<script> function Request(strName){ var strHref = document.location.href; var intPos = strHref.indexOf("?"); var strRight = strHref.substr(intPos + 1); var arrTmp = strRight.split("&"); for(var i = 0; i < arrTmp.length; i++ ) { var arrTemp = arrTmp[i].split("="); if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1]; } return 0; } var a=1; var name=Request("xingming"); var f=Request("f"); alert(name) ; var f= new Function('return '+f)(); f() </script>
因为你那个传过来的是字符串,所以要重新new一下
还有必须定义a的值,不然无法弹出来
#4
var f= new Function('return '+f)();
这个好像不行啊?FF报错了:SyntaxError: missing ( before formal parameters
#5
你的 b.html 中有变量 a 吗?没有肯定是要出错的
不需通过页面传递,你这样测试一下就可以了
a = 123; f = 'function(){alert(a)}';
ff = new Function('return '+f)(); ff();
#6
看完我的说明么?
要定义a,我的代码你估计也没注意看吧
#7
FF中是不能用f.toString()来取得函数的代码的
还是老实的用字符串吧
var f="function(){alert('"+a+"')}";
#8
版主 你试过这个吗? 要是没定义变量a, 应该是常规错误,而不是语法错误啊,像这样:ReferenceError: a is not defined
var f=Request("f").replace(/\%20/g, ""); 你加这个处理看看就知道了
#11
这种错误和题不算难
在于思考和观察,仅仅就只是一个简单的字符串处理而已
#12
恩 非常感谢版主!!!
#1
function Request(strName){ var strHref = document.location.href;//当前url var intPos = strHref.indexOf("?");//得到第一个?的位置 var strRight = strHref.substr(intPos + 1);//截取url中?的位置 var arrTmp = strRight.split("&");//把?后的字符串按照&进行切割 for(var i = 0; i < arrTmp.length; i++ ) {//遍历&切割后的数组 var arrTemp = arrTmp[i].split("=");//把当前值按照=切割, 比如 a=1 if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];//如果当前的键等于strName,返回当前值 } return 0; }
#2
var strRight = strHref.substr(intPos + 1);//截取url中?的后的字符串
#3
<script> function Request(strName){ var strHref = document.location.href; var intPos = strHref.indexOf("?"); var strRight = strHref.substr(intPos + 1); var arrTmp = strRight.split("&"); for(var i = 0; i < arrTmp.length; i++ ) { var arrTemp = arrTmp[i].split("="); if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1]; } return 0; } var a=1; var name=Request("xingming"); var f=Request("f"); alert(name) ; var f= new Function('return '+f)(); f() </script>
因为你那个传过来的是字符串,所以要重新new一下
还有必须定义a的值,不然无法弹出来
#4
var f= new Function('return '+f)();
这个好像不行啊?FF报错了:SyntaxError: missing ( before formal parameters
#5
你的 b.html 中有变量 a 吗?没有肯定是要出错的
不需通过页面传递,你这样测试一下就可以了
a = 123; f = 'function(){alert(a)}';
ff = new Function('return '+f)(); ff();
#6
var f= new Function('return '+f)();
这个好像不行啊?FF报错了:SyntaxError: missing ( before formal parameters
看完我的说明么?
要定义a,我的代码你估计也没注意看吧
#7
var f= new Function('return '+f)();
这个好像不行啊?FF报错了:SyntaxError: missing ( before formal parameters
FF中是不能用f.toString()来取得函数的代码的
还是老实的用字符串吧
var f="function(){alert('"+a+"')}";
#8
看完我的说明么?
要定义a,我的代码你估计也没注意看吧
版主 你试过这个吗? 要是没定义变量a, 应该是常规错误,而不是语法错误啊,像这样:ReferenceError: a is not defined
#9
看完我的说明么?
要定义a,我的代码你估计也没注意看吧
版主 你试过这个吗? 要是没定义变量a, 应该是常规错误,而不是语法错误啊,像这样:ReferenceError: a is not defined