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>
不传参 这样写就没问题 ~~~~ 展开
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>
不传参 这样写就没问题 ~~~~ 展开
7个回答
展开全部
onblur="checkname(name)"
js认为,这里面的name是一个变量名...也就是为空了,肯定你获取不了.
把name改为this.就可以了.也就是说把当前onblue的这个控件传给了函数.
或者
onblue="checkname('name')"这样,然后把函数改一改:
document.getElementById(name);也可以.
因为这样函数里的name变量就会得到字符串'name',然后再$去获得控件..
这样说,意思应该就明白了吧?
推荐用this传递
js认为,这里面的name是一个变量名...也就是为空了,肯定你获取不了.
把name改为this.就可以了.也就是说把当前onblue的这个控件传给了函数.
或者
onblue="checkname('name')"这样,然后把函数改一改:
document.getElementById(name);也可以.
因为这样函数里的name变量就会得到字符串'name',然后再$去获得控件..
这样说,意思应该就明白了吧?
推荐用this传递
推荐于2018-03-29 · 知道合伙人互联网行家
关注
展开全部
方案一 ,未保留事件对象作为第一个参数传入
代码如下:
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));
代码如下:
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));
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<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属性的长度。
改成:
<input name="name" type="text" size="20" onblur="checkname(this)" />
你应该传当前对象this。JS接收参数后应用的是name.value.length 也就是当前对象的value属性的长度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<input name="name" type="text" size="20" onblur="checkname(name)" />
这里不能这么写,这里的参数要通过this传过去,你这个写个name表示把一个叫name的变量传过去,所以不行,可以改成:
<input name="name" type="text" size="20" onblur="checkname(this)" />
这里不能这么写,这里的参数要通过this传过去,你这个写个name表示把一个叫name的变量传过去,所以不行,可以改成:
<input name="name" type="text" size="20" onblur="checkname(this)" />
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<input
name="name"
type="text"
size="20"
onblur="checkname(name)"
/>
这里不能这么写,这里的参数要通过this传过去,你这个写个name表示把一个叫name的变量传过去,所以不行,可以改成:
<input
name="name"
type="text"
size="20"
onblur="checkname(this)"
/>
name="name"
type="text"
size="20"
onblur="checkname(name)"
/>
这里不能这么写,这里的参数要通过this传过去,你这个写个name表示把一个叫name的变量传过去,所以不行,可以改成:
<input
name="name"
type="text"
size="20"
onblur="checkname(this)"
/>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询