日期:2014-05-16  浏览次数:20368 次

新手刚刚接触js 麻烦大神给看看这段代码怎么了
下面的这一段代码中为什么用匿名函数的方式就能实现 而定义一个函数后再给添加onkeypress事件就会出现“尚未实现”错误呢。
小弟刚刚开始学习js,思考一上午,实在想不通 求大神解救!

//给每一个input添加输入格式监听
var userName = regForm.userName;

/*userName.onkeypress=function(){
if(!/^\w{2,16}$/.test(userName.value)){
userName.warningNode.style.display="inline";
userName.noticeNode.style.display="inline";
userName.focus();
return;
}else{
userName.warningNode.style.display="none";
userName.noticeNode.style.display="none";
}
}*/
userName.onkeypress=checkFormat(!/^\w{2,16}$/.test(userName.value),userName);

}
//检测输入的格式是否正确
function checkFormat(b,tagName){
if(b){
tagName.warningNode.style.display="inline";
tagName.noticeNode.style.display="inline";
tagName.focus();
return;
}else{
tagName.warningNode.style.display="none";
tagName.noticeNode.style.display="none";
}
}

------解决方案--------------------
userName.onkeypress = alert('kk');

userName.onkeypress = function(){alert('kk')};


你自己分别试下2者的区别 就明白了
------解决方案--------------------
function fn(){
}
userName.onkeypress = fn;
userName.onkeypress = fn();


------解决方案--------------------
引用:
Quote: 引用:

userName.onkeypress = alert('kk');

userName.onkeypress = function(){alert('kk')};


你自己分别试下2者的区别 就明白了

太感谢了 虽然没有完全懂 还是懂了一些

我刚才把代码改成 
 userName.onkeypress=function(){checkFormat(!/^\w{2,16}$/.test(userName.value),userName);
就行了 那么实际开发中会遇到这种问题吗  如果会的话怎么解决呢 
 
}


只要最终结果是按我的需求跑的 那么就是对的
所以怎么解决问题 就是让他按你的意愿走
如果没按照你的意愿走 那么就是有问题
如果按照你的意愿就 还有问题 那么重新整理下需求
反复之后 必定是正确的结果