论坛首页 Web前端技术论坛

请教个关于Class.create()的问题

浏览 4720 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-20  
<html>
	<head>

		<script src="prototype.js"></script>
		<script src="autoSuggest.js"></script>
		<script>
			Event.observe(window,'load',function(){var autoSuggest = new AutoSuggest('ajaxsubmit','tx1');});
		</script>
	</head>
	<body>
		<input id='tx1' type='text'/>
	</body>
</html>


autoSuggest.js
   var AutoSuggest = Class.create();
    AutoSuggest.prototype = {
        initialize : function(url,el){
            this.url = url;
            this.el = $(el);
            this.responseContext = '';
         	this.el.onkeydown = this.getResponseContext(this.el);
            //Event.observe(this.el,'keydown',this.getResponseContext(this.el));
        },
        getResponseContext : function(el){
            Ajax.Request(this.url,{
                            parameters:{value : $F(el)},
                            onComplete : (function(xmlResponse){this.responseContext = xmlResponse.responseText;this.createDownList();}).bind(this)
            })
        },
        createDownList : function(){
        	alert(this.responseContext);
                       
        }
            }


这只是一部分,现在是当我一打开页面时,在ie下就报 this.initialize为空或不是对象,要是我把
this.el.onkeydown = this.getResponseContext(this.el);

注掉就不会报错,不知道为什么,谢谢大家帮我指点一下
   发表时间:2007-06-21  
我知道了,是我在getResponseContext这个方法中少了个new,所以报错,可报this.initialize为空,我很不理解,还有我发现这样写
this.el.onkeyup = this.getResponseContext(this.el);

当刷新页面时会马上把input元素中的值打出来,然后报错说‘尚未实现’,不理解为什么呢?
this.el.onkeyup = function(){this.getResponseContext(this.el)}.bind(this);
or
Event.observe(this.el,'keyup',function(){this.getResponseContext(this.el)}.bind(this))

这样写就不会错。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics