javaScript 函数传参问题

<scriptlanguage="javascript">functioncheckname(name){if(name.value.length==0){documen... <script language="javascript">
function checkname(name)
{
if(name.value.length==0)
{
document.getElementById("nameDiv").innerHTML="<font color='red'>用户名不能为空!</font>";
}
}
</script>
--------------------------------------------------------------------
<input name="name" type="text" size="20" onblur="checkname(name)" />
--------------------------------------------------------------------

出不来效果
这样写为什么不对呢??
-------------------------------------------
<script language="javascript">
function checkname()
{
if(document.getElementById("name").value.length==0)
{
document.getElementById("nameDiv").innerHTML="<font color='red'>用户名不能为空!</font>";
}
}
</script>
不传参 这样写就没问题 ~~~~
展开
 我来答
Loadinger
推荐于2016-10-25 · TA获得超过552个赞
知道小有建树答主
回答量:757
采纳率:100%
帮助的人:416万
展开全部
onblur="checkname(name)"
js认为,这里面的name是一个变量名...也就是为空了,肯定你获取不了.
把name改为this.就可以了.也就是说把当前onblue的这个控件传给了函数.
或者
onblue="checkname('name')"这样,然后把函数改一改:
document.getElementById(name);也可以.
因为这样函数里的name变量就会得到字符串'name',然后再$去获得控件..
这样说,意思应该就明白了吧?
推荐用this传递
趣事情
推荐于2018-03-29 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
方案一 ,未保留事件对象作为第一个参数传入

代码如下:

function handler(arg1,arg2){
alert(arg1);
alert(arg2);
}
E.on(document.getElementById('aa'),'click',function(){
handler(arg1,arg2);
});

方案二,保留事件对象作为第一个参数

代码如下:

function handler(e,arg1,arg2){
alert(e);
alert(arg1);
alert(arg2);
}
E.on(document.getElementById('aa'),'click',function(e){
handler(e,arg1,arg2);
});

方案三,给Function.prototype添加getCallback,不保留事件对象

代码如下:

Function.prototype.getCallback = function(){
var _this = this, args = arguments;
return function(e) {
return _this.apply(this || window, args);
};
}
E.on(document.getElementById('aa'),'click',handler.getCallback(v1,v2));

方案四,给Function.prototype添加getCallback,保留事件对象作为第一个参数传入

代码如下:

Function.prototype.getCallback = function(){
var _this = this, args = [];
for(var i=0,l=arguments.length;i<l;i++){
args[i+1] = arguments[i];
}
return function(e) {
args[0] = e;
return _this.apply(this || window, args);
};
}
E.on(document.getElementById('aa'),'click',handler.getCallback(v1,v2));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhamx184
2009-03-12
知道答主
回答量:25
采纳率:0%
帮助的人:18.5万
展开全部
<input name="name" type="text" size="20" onblur="checkname(name)" />
改成:
<input name="name" type="text" size="20" onblur="checkname(this)" />

你应该传当前对象this。JS接收参数后应用的是name.value.length 也就是当前对象的value属性的长度。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ヤマザキ266e77
2009-03-12 · TA获得超过2052个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:988万
展开全部
<input name="name" type="text" size="20" onblur="checkname(name)" />
这里不能这么写,这里的参数要通过this传过去,你这个写个name表示把一个叫name的变量传过去,所以不行,可以改成:
<input name="name" type="text" size="20" onblur="checkname(this)" />
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冯岚第五冰蓝
2019-05-09 · TA获得超过1180个赞
知道小有建树答主
回答量:1793
采纳率:100%
帮助的人:8.7万
展开全部
<input
name="name"
type="text"
size="20"
onblur="checkname(name)"
/>
这里不能这么写,这里的参数要通过this传过去,你这个写个name表示把一个叫name的变量传过去,所以不行,可以改成:
<input
name="name"
type="text"
size="20"
onblur="checkname(this)"
/>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式