2013年5月22日星期三

晚上游泳完后本不想再来公司,无奈手机在这里放着(并且定了闹铃)就只能过来了。今天遇到两个问题:1是settimeout函数加上参数问题:晚上搜索有以下几种方法

在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,

这就需要想方法解决。

一、采用字符串形式:——(缺陷)参数不能被周期性改变

setInterval("foo(id)",1000);

二、匿名函数包装 (推荐)

复制代码

代码如下:

 

window.setInterval(function()

{

foo (id);

}, 1000);

 

这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;

三、定义返回无参函数的函数

复制代码

代码如下:

 

function foo(id)

{

alert(id);

}

function _foo(id)

{

return function()

{

foo(id);

}

}

window.setInterval(_foo(id),1000);

 

这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。

在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。

四、修改setInterval

复制代码

代码如下:

 

function foo(id)

{

alert(id);

}

var _sto = setInterval;

window.setInterval = function(callback,timeout,param)

{

var args = Array.prototype.slice.call(arguments,2);

var _cb = function()

{

callback.apply(null,args);

}

_sto(_cb,timeout);

}

window.setInterval(hello,3000,userName);

 

以上的所有方法也适合setTimeout。采用第一种方法修改解决问题;

第二就是想给structs标签的s:select加上提示,搜索后一般html标签都可以通过加上title来提示,但难处事无法把listvalue赋值为title来做提示,搜索很久没找到解决办法,最后只能做成使用<option>来解决。

你可能感兴趣的:(2013年5月22日星期三)