关于面向对象JavaScript的问题 forms[0].input_name.attachEvent("onchange",new Test().check);代码仅供参考,只是告诉楼主可以通过attachEvent实现. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <script> function Test(item1) { this.item1 = item1; this.check = function() { alert("item1 = "+this.item1); } } </script> <body><input type="button" value="test" onclick="new Test('ss').check()"></body></HTML> lz是这个意思吗? forms[0].input_name.attachEvent("onchange",new Test(document.getElementById('input_name')).check); LZ可能是这个意思 呵呵,我的意思是 function Test(item1) { this.item1 = item1; this.check = function() { //把这个方法注册在id2的事件上,然后在这里对id1进行操作 } } <head> window.onlaod = function() { var r = new Test('id1'); document.getElementById('id2').onClick = r.check; }</head><body> <input type="text" id="id1"> <input type="text" id="id2"></body>由于在事件触发的时候,控件id2被作为check方法的上下文对象传到了方法里此时在check方法里调用原来Object上的属性item1就访问不到了我是想问问有没有方法在check()方法里访问到这个item1不知道说明白了没有?呵呵 这样写:document.getElementById('id2').onclick =function(){r.check();} 楼主想做的是不可能直接做到的,js的function里面的this指向的是调用他的对象,而把一个function作为事件响应函数,那么调用的对象就不会是你定义的对象了绕个弯子实现可以,如使用代理,反正要实现的话就是想办法让你定义的对象调用函数function Test(item1) { this.item1 = item1; var trueFn = fucntion(}{}; var obj = this; this.check = function() { trueFn.apply(obj , arguments); } } 没什么意义吧<script>function Test(item1) { this.item1 = item1; this.check = function() { alert(this.item1); //把这个方法注册在id2的事件上,然后在这里对id1进行操作 }}window.onload = function(){ var r = new Test('id1'); document.getElementById('id2').onclick = (function(){ return function (){ r.check(); // id1 } })()}</script><input type="text" id="id1"><input type="text" id="id2"> LZ想要什么功能?是要id2的事件引发check方法吗?如果是这样的话,楼上的正解~ 12楼那朋友我写那代码肯定就是楼主想要的,但能像我这么写吗?如果不行,能给我说说原因吗? function Test(item1) { this.item1 = item1; this.check = function() { alert(item1); } } var r = new Test('id1'); document.getElementById('id2').onclick = r.check();这样能直接调用check()方法吗? r.check() 是执行这个方法 function Test(item1) { this.item1 = item1; this.check = function() { alert(item1); } } var r = new Test('id1'); document.getElementById('id2').onclick = r.check(); 12楼朋友你看我这好像也是用Test对象去调check()方法的,为什么就不行呢? 不行的原因是因为,定义变量的时候,访问的是Object实例上的item1变量而当事件触发的时候,浏览器把控件作为上下文对象传给了check方法在check方法里就找不到这个变量,也就是他访问不到Object对象上的变量如果看不明白我写的这些,建议你在网上搜搜 JavaScript的方法上下文然后就明白为什么了。我问这个问题是想问有没有什么办法来打破上下文对象的限制就是一个对象的方法,被注册到控件事件上,当事件触发的时候调用该方法而该方法又使用到了对象本身的一些属性,但是现在由于方法上下文的不同,导致方法在作为事件处理方法时,是访问不到对象的属性的。我是想做类似的监听器模式,让一个对象的方法监听控件时间,并处理想把这个JavaScript对象,写成类似 Java里的 Listener对象但是现在不行、不知道这次看明白了没? 如何禁止IE Security Warning这个对话框 我要比较2个日期之间差多少天怎么做?JSP怎么做,谢谢 onclick的问题 关于 || 符号 document.forms[0].submit()的一个问题,求助!!!!!! js取变量名的问题 焦点问题---判断window.open()出来的新窗口是否失去了焦点? 比较郁闷的iframe问题?大家帮忙? 页面有两个frame,我想在第一个frameset中按搜索按钮,进入到第二个frameset,应该怎么办? 有一个关于select的问题,比较头疼 关于滤镜的兼容性问题 河北工业大学首页的天气导航条是怎么做的?
<HTML>
<HEAD>
<TITLE> New Document </TITLE> </HEAD>
<script>
function Test(item1)
{
this.item1 = item1;
this.check = function()
{
alert("item1 = "+this.item1);
}
}
</script>
<body>
<input type="button" value="test" onclick="new Test('ss').check()"></body>
</HTML> lz是这个意思吗?
function Test(item1)
{
this.item1 = item1;
this.check = function()
{
//把这个方法注册在id2的事件上,然后在这里对id1进行操作
}
} <head>
window.onlaod = function()
{
var r = new Test('id1');
document.getElementById('id2').onClick = r.check; }
</head>
<body>
<input type="text" id="id1">
<input type="text" id="id2">
</body>由于在事件触发的时候,控件id2被作为check方法的上下文对象传到了方法里此时在check方法里调用原来Object上的属性item1就访问不到了我是想问问有没有方法在check()方法里访问到这个item1不知道说明白了没有?呵呵
这样写:document.getElementById('id2').onclick =function(){r.check();}
function Test(item1)
{
this.item1 = item1;
var trueFn = fucntion(}{};
var obj = this;
this.check = function()
{
trueFn.apply(obj , arguments);
}
}
<script>
function Test(item1)
{
this.item1 = item1;
this.check = function()
{
alert(this.item1); //把这个方法注册在id2的事件上,然后在这里对id1进行操作
}
}window.onload = function()
{
var r = new Test('id1');
document.getElementById('id2').onclick = (function(){
return function (){
r.check(); // id1
}
})()
}</script><input type="text" id="id1">
<input type="text" id="id2">
如果是这样的话,楼上的正解~
如果不行,能给我说说原因吗?
function Test(item1)
{
this.item1 = item1;
this.check = function()
{
alert(item1);
}
}
var r = new Test('id1');
document.getElementById('id2').onclick = r.check();
这样能直接调用check()方法吗?
{
this.item1 = item1;
this.check = function()
{
alert(item1);
}
}
var r = new Test('id1');
document.getElementById('id2').onclick = r.check();
12楼朋友你看我这好像也是用Test对象去调check()方法的,为什么就不行呢?
不行的原因是因为,定义变量的时候,访问的是Object实例上的item1变量而当事件触发的时候,浏览器把控件作为上下文对象传给了check方法在check方法里就找不到这个变量,也就是他访问不到Object对象上的变量如果看不明白我写的这些,建议你在网上搜搜 JavaScript的方法上下文然后就明白为什么了。
我问这个问题是想问有没有什么办法来打破上下文对象的限制就是一个对象的方法,被注册到控件事件上,当事件触发的时候调用该方法而该方法又使用到了对象本身的一些属性,但是现在由于方法上下文的不同,导致方法在作为事件处理方法时,是访问不到对象的属性的。我是想做类似的监听器模式,让一个对象的方法监听控件时间,并处理想把这个JavaScript对象,写成类似 Java里的 Listener对象但是现在不行、不知道这次看明白了没?