您好,欢迎访问一九零五行业门户网

用apply让javascript函数仅执行一次的代码_javascript技巧

复制代码 代码如下:
var obj = new object();
obj.triggeronce = function(fn) { //控制让函数只触发一次
return function() {
try {
fn.apply(this, arguments);
}
catch (e) {
var txt = there was an error on this page.\n\n;
txt += error message: + e.message + \n\n;
txt += error name: + e.name + \n\n;
//alert(txt);//正式平台上可能需要注释掉该行
}
finally {
fn = null;
}
}
}
调用形式:
复制代码 代码如下:
function showmsg(arg){
alert(arg);
}
var fn=obj.triggeronce(showmsg);
fn(1);//只执行一次
fn(2);//没有调用fn
最后,关于javascript的apply方法,您可以简单参考这篇旧文。
【外一篇】用javascript取得querystring的值
在常见的网站中,经常碰到有“xxxx.aspx?username=jeffwong&address=北京” 这种形式的url,通过asp.net的request对象获取键值轻而易举,通过js也不是很难,用下面的函数就可以搞定了:
代码
复制代码 代码如下:
var urlstrs = location.search; //querystring
var request = {};
request.count = 0;
request.add = function(name, value) {
if (request.hasownproperty(name) == false) {
request.count++; //如果不存在,计数添加1
}
request[name] = value;
return true;
}
request.querystring = function(name) {//取对应的键值
var key = name.tostring().tolocalelowercase(); //不区分大小写
var result = null;
try {
// if (request.hasownproperty(key)) {
result = request[key];
// }
}
catch (e) {
//alert(e.message);
}
return result;
}
request.init = function(urlquerystring) {
if (urlquerystring.indexof(?) != -1) {
var url = urlquerystring.substr(1)
var strarr = url.split(&);
for (var i = 0; i var strchildarr = strarr[i].split(=);
var name = string(strchildarr[0]).tolowercase();
var value = unescape(strchildarr[1]); //unescape解码
this.add(name, value); //添加
}
}
}
测试函数如下:
代码
复制代码 代码如下:
//测试函数
function test() {
request.init(urlstrs); //初始化request
alert(request.count);
var name = username;
var value = request.querystring(name);
alert(request[name]);
alert(request.querystring(name));
name = address
alert(request[name]);
alert(request.querystring(name));
name = age;
alert(request[name]);
alert(request.querystring(name));
}
需要说明的是,url里的参数通常都会有编码,本文采用的是比较常用的unescape进行解码,实际上,关于url参数编码,通常有escape,encodeuricomponent和encodeuri这三种编码函数,escape是window对象的内置函数,而另外两种则是javascript内置函数,它们解码的函数也是一一对应的关系(您可以参考这一篇),各自对应的反转函数分别是unescape,decodeuricomponent和decodeuri。
作者:jeff wong
其它类似信息

推荐信息