请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

执行的顺序

<!DOCTYPE html>
<html>
<head>
	<title>01</title>
</head>
<body>

	<div id="hel">hello</div>

	<script type="text/javascript">
		function Elem(id){
			this.elem = document.getElementById(id);
		}
		Elem.prototype.html = function(val){
			var elem = this.elem;
			if(val){
				elem.innerHTML = val;
				return this;
			}else{
				return elem.innerHTML;
			}
		};

		Elem.prototype.on = function(type, fn){
			var ele = this.elem;
			ele.addEventListener(type, fn);
			return this;
		};

		var div1 = new Elem('hel');
		div1.html('click me').on('click', function(){
			alert('u clicked me ');
		}).html('<p>hi clicked</p>');

		
	</script>
</body>
</html>

老师,我想问一下,这个执行顺序应该是先修改div内的innerHTML,然后绑定事件,因为返回了this,所以继续执行,修改div的innerHTML,页面上会直接展示最后一次修改的内容hi clicked,然后点击元素执行事件,这样理解对吗?

正在回答

1回答

对,没问题。

关键是你还得明白,为何页面上“会直接展示最后一次修改的内容hi clicked”?你可以表示一下你的理解,写出来我看看。

0 回复 有任何疑惑可以回复我~
  • 提问者 EWL #1
    我的理解是:首先html会返回this,第一次使用html在页面上修改了div中的内容,然后返回this,被事件绑定函数on接收,on里面会给元素绑定事件,同时返回this,被最后一个html函数接收,这时候html函数内部直接修改div的内容,而事件绑定已经绑定上了,只需要执行点击触发。
    以上是我的理解,希望老师多多指点。同时感谢老师的回复。
    回复 有任何疑惑可以回复我~ 2018-02-24 09:53:39
  • 双越 回复 提问者 EWL #2
    我的问题是:为何页面上“会直接展示最后一次修改的内容hi clicked”,而不是先显示“click me”再显示“hi clicked”?你想一下
    回复 有任何疑惑可以回复我~ 2018-02-24 10:10:55
  • 提问者 EWL 回复 双越 #3
    emmmmm想了想我觉得click me 是渲染过的,然后执行到最后一个html的时候div中的click me被hi clicked覆盖了,除此之外没有什么头绪,希望老师能给一点点提示
    回复 有任何疑惑可以回复我~ 2018-02-24 10:38:03

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号