• 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>来解决。

  • 相关阅读:
    LogMiner日志分析工具的使用
    V$SQL%知多少之二(V$SQL_PLAN)
    k8s中prometheus监控k8s外mysql
    mysql5.7下载
    【整理】Linux:set eux
    简单快速使用阿里云镜像仓库
    skywalking安装及使用(非容器版)
    建库、建表、造数据(微服务实战项目部分示例)
    常用环境变量配置(vim /etc/profile)
    Docker 容器默认root账号运行,很不安全!
  • 原文地址:https://www.cnblogs.com/doit8791/p/3093877.html
Copyright © 2020-2023  润新知