| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1161 人关注过本帖
标题:click事件没有按预期返回字符串参数,而是将click事件作为参数回?
只看楼主 加入收藏
开司米
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-1-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
click事件没有按预期返回字符串参数,而是将click事件作为参数回?
问题描述:click事件没有按预期返回字符串参数,而是将click事件作为参数回
          传,这是为什么?应如何解决,哪怕给个提示也好,谢谢了!
/*
 * 方法描述:服务器接收到格式为:st1r#str2#str3#str4的字符串。js将其分
 *           割成数组。然后依次在一个div标签下建立数个span标签。span标
 *           签附于一个click事件侦听。目的是把参数字符串写入一个text标
 *           签。
 * @parameters responseText :服务器回执字符串。
 */   
function buildChoose(responseText){
       //DIV标签
       var content = _get("choosePanel");
       //字符串数组
       var columns = responseText.split("#");
       //字符串数组第一位是text的id
       var textObj = _get(columns[0]);
       //click事件响应方法
       var onclickFn = function(index){
          return function(index){
              alert("type:"+index.type);//此处alert输出内容为:type:click,即对象类型是click。但是原本传入的是一个数组下标啊
              //textObj.value = columns[parseInt(index)];
          }
       }
       //循环创建span标签,然后绑定侦听
       for(var i=1;i<columns.length;i++){
          var column = document.createElement("span");
          column.style.cssText="padding:2px;cursor:pointer;color:#4294EF;";
          column.innerHTML = columns[i];
          content.appendChild(column);
          addEventDf(column,"click",oncclickFn(i));//回调方法的参数数组下标。
       }
}

//绑定侦听。
function addEventDf(obj,evt,fn){
    if(obj.addEventListener){
          obj.addEventListener(evt,fn,false);
    }else if(obj.attachEvent){
          obj.attachEvent('on'+evt,fn);
    }
}


[ 本帖最后由 开司米 于 2010-1-25 23:21 编辑 ]
搜索更多相关主题的帖子: 字符 参数 click 
2010-01-25 23:20
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
收藏
得分:0 
首先说下 你给的代码错误
addEventDf(column,"click",oncclickFn(i));//回调方法的参数数组下标。
2010-01-26 09:33
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
收藏
得分:0 
直接把onclickFn写到addEventDf(column,"click",oncclickFn(i));里面
2010-01-26 09:42
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
收藏
得分:10 
或者
程序代码:
var onclickFn = function(index){
    return function(){
        alert("type:"+index.type);//此处alert输出内容为:type:click,即对象类型是click。但是原本传入的是一个数组下标啊?
        //textObj.value = columns[parseInt(index)];
    }
}
2010-01-26 09:45
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:10 
同aspic
如果想使用闭包中的变量,就应该把return function(index)中的index去掉。这样才能引用到外面的index
程序代码:
var onclickFn = function(index){
    return function(){
        alert("type:"+typeof(index));
        //textObj.value = columns[parseInt(index)];
    }
}
2010-01-26 11:33
开司米
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-1-25
收藏
得分:0 
正如aspic,foktime二位所说,确实是我的函数有问题。非常感谢!!小弟学艺不精,多谢,多谢!

我喜欢懒羊羊
2010-01-26 15:59
开司米
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-1-25
收藏
得分:0 
另外,弱弱的问一句,如果,我需要多个参数回传那该怎么办呢?return function(){}的参数还是不写吗?

我喜欢懒羊羊
2010-01-26 16:15
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
收藏
得分:0 
一样的
2010-01-26 17:06
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
程序代码:
var onclickFn = function(参数1,参数2,参数3,...参数N){
    return function(){
        alert("参数1:"+参数1+","参数2:"+参数2+","参数3:"+参数3+......N);
        //textObj.value = columns[parseInt(index)];
    }
}
return function(index){} 这么传什么也传不到 index无论是多少在这都相当于一个现场事件event
2010-01-26 17:37
开司米
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-1-25
收藏
得分:0 
万分感谢!虽然还有一些疑问(我之前事件绑定也用了闭包,但是return得时候还是赋予了参数)。不过,没关系,剩下的交给我研究吧。等我把手上这点事弄完,好好理理。越来越喜欢js了。谢谢大家!

我喜欢懒羊羊
2010-01-26 22:05
快速回复:click事件没有按预期返回字符串参数,而是将click事件作为参数回?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047451 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved