问题:function的定义和声明,在对象里面的函数不初始化吗?
<script type="text/javascript"> function fousFun(id){ $("#"+id).focusin(function() { $("#"+id).val(""); }); } function fousOut(id){ $("#"+id).focusout(function() { $("#"+id).val("找人");; }); } var header={ topHtml:function(){ return '你好:<input id="inputId" name="inputName" value="找人" οnfοcus="fousFun(this.id);" οnblur="fousOut(this.id);" />'; }, init:function(){ $("body").append(this.topHtml); /* $("#inputId").focusin(function() { $("#inputId").val(""); }); $("#inputId").focusout(function() { $("#inputId").val("找人"); }); */ } }; header.init(); </script>
将两个函数放在对象header里,老说未定义,主要的原因是定义的函数有作用域,而调用函数的位置在body里的标签的onfous函数,此时调用的是window对象的函数,而不能调到header里的方法。
如果在header里使用绑定函数的方法可以调用header里的方法,例如如下:
<script type="text/javascript"> var header={ topHtml:function(){ return '你好:<input id="inputId" name="inputName" value="找人" />'; }, fun1:function(){ $("#inputId").val(""); }, fun2:function(){ $("#inputId").val("找人"); }, init:function(){ $("body").append(this.topHtml); $("#inputId").on("focus",this.fun1); $("#inputId").on("blur",this.fun2); } }; header.init(); </script>