关于javascript中this的疑问 onclick里的this指的是创建的DIV而不是JSClass这个对象了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改成这样<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <script> function JSClass(jn) { this.m_Text = 'division element'; this.ToString = function(){ alert(eval(jn).m_Text); }; this.m_Element = document.createElement('DIV'); this.m_Element.innerHTML = this.m_Text; this.m_Element.attachEvent('onclick', this.ToString); } JSClass.prototype.Render = function() { document.body.appendChild(this.m_Element); } var jc = new JSClass("jc"); jc.Render(); jc.ToString(); </script> </BODY> </HTML> 是啊这时侯this指的是div对像自己 文中得所有this指的都是JSClass() 本身自己程序唯一的错误在于点击文字"division element",将会显示:"undefined"。原因是因为这句this.m_Element.attachEvent('onclick', this.ToString); 你给div元素添加的onclick事件是 JSClass()的一个函数名,它是JSClass()的成员并不是全局成员,所以onclick当然无效了可以这样this.m_Element.attachEvent('onclick', test); function test(){ alert('test');} <BODY> <script> function JSClass() //创建一个对象,js中创建对象可以用function 对象名或者var 对象名 = function(){}{ this.m_Text = 'division element'; //设置JSClass对象的m_Text属性 this.m_Element = document.createElement('DIV'); //设置m_Element this.m_Element.innerHTML = this.m_Text; //设置m_Element的html内容 this.m_Element.attachEvent('onclick', this.ToString); //为m_Element的onclick事件附加一个方法,方法名为ToString,this.ToString表示引用改对象JSClass的ToString发法,如果改方法不通过prototype定义将报错.如果去掉this,则可以不通过prototype定义方法} JSClass.prototype.Render = function() //给jsclass对象附加方法Render.调用如:JSClass.Render();{ document.body.appendChild(this.m_Element); } JSClass.prototype.ToString = function() //实现上面定义的ToString方法{ alert(this.m_Text); //这里的this表示JSClass,this.m_Text就是division element}; var jc = new JSClass(); //实例化一个JSClass对象jc.Render(); //调用Render;jc.ToString(); //调用ToString;</script> 急求转义符 關于深圳富士康.net程序員待遇------->要真誠回答哦:)(關于程序員待遇) 为什么JS论坛没有让代码直接运行的输入框 很多技术论坛都有的啊 js 验证select下拉菜单问题 关于提交的问题 top.window.outerHeight = 500这句话的top是什么意思? 大家帮忙分析一下这段JavaScript加密加密原理 初学Javascript,给大家送分! 前端工程师的修真秘籍(css、javascript和其它) 函数申明提升的问题,求大神解答!!! 请教正则表达式的超级高手,我被一个问题难住了 实现视频的移动以及大小任意拖曳
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD> <BODY>
<script>
function JSClass(jn)
{
this.m_Text = 'division element';
this.ToString = function(){
alert(eval(jn).m_Text);
};
this.m_Element = document.createElement('DIV');
this.m_Element.innerHTML = this.m_Text;
this.m_Element.attachEvent('onclick', this.ToString);
}
JSClass.prototype.Render = function()
{
document.body.appendChild(this.m_Element);
} var jc = new JSClass("jc");
jc.Render();
jc.ToString();
</script>
</BODY> </HTML>
点击文字"division element",将会显示:"undefined"。原因是因为这句
this.m_Element.attachEvent('onclick', this.ToString);
你给div元素添加的onclick事件是 JSClass()的一个函数名,它是JSClass()的成员
并不是全局成员,所以onclick当然无效了可以这样
this.m_Element.attachEvent('onclick', test);
function test()
{
alert('test');
}
<BODY>
<script>
function JSClass() //创建一个对象,js中创建对象可以用function 对象名或者var 对象名 = function(){}
{
this.m_Text = 'division element'; //设置JSClass对象的m_Text属性
this.m_Element = document.createElement('DIV'); //设置m_Element
this.m_Element.innerHTML = this.m_Text; //设置m_Element的html内容
this.m_Element.attachEvent('onclick', this.ToString); //为m_Element的onclick事件附加一个方法,方法名为ToString,this.ToString表示引用改对象JSClass的ToString发法,如果改方法不通过prototype定义将报错.如果去掉this,则可以不通过prototype定义方法
}
JSClass.prototype.Render = function() //给jsclass对象附加方法Render.调用如:JSClass.Render();
{
document.body.appendChild(this.m_Element);
} JSClass.prototype.ToString = function() //实现上面定义的ToString方法
{
alert(this.m_Text); //这里的this表示JSClass,this.m_Text就是division element
}; var jc = new JSClass(); //实例化一个JSClass对象
jc.Render(); //调用Render;
jc.ToString(); //调用ToString;
</script>