input标签中 onclick="test(this)" 为什么是用this呢?

lf1218 2016-04-01 04:56:11
<html >
<head>

<script>
function test(valueObj){
//window.alert(valueObj.value);
var mydiv=document.getElementById("div1")
//window.alert(mydiv.style.width);
if (valueObj.value=="黑色")
{
//window.alert("这是黑色");
mydiv.style.backgroundColor="black";
}else if (valueObj.value=="红色")
{
//window.alert("这是红色");
mydiv.style.backgroundColor="red";
}
}

</script>
</head>

<body>
<div id="div1" style="width:300px;height:250px;background-color:red">div1</div>
<input type="button" value="黑色" onclick="test(this)"/>
<!--this代表的是整个input-->
<input type="button" value="红色" onclick="test(this)"/>
</body>
</html>





input标签中 onclick="test(this)" 为什么必须是this呢?this代表的是整个input控件,事件源吗?
新手上路,还望指导,感谢万分!
...全文
978 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2016-04-02
  • 打赏
  • 举报
回复
this 就是当前对象,谁触发的事件就是谁

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
  <div  id="div1" style="width:300px;height:250px;background-color:red">div1</div>
  <input type="button" value="黑色" onclick="o.changeColor(this)"/> <!-- 这里的 this 是触发对象本身,作为参数传递给对象 o 的 changeColor 方法 -->
  <input type="button" value="红色" onclick="o.changeColor(this)"/> 
  <script>
  var o = {
	  bgcolor : 'red',
	  obj : document.getElementById('div1'),
	  changeColor:function(btn){
                  // 这里的 this 是对象 o 本身,而传递进来的对象作为参数,被方法重命名了,即变量 btn
		  this.bgcolor = this.obj.style.background = btn.value=='黑色'?'black':'red';
	  }
  }
  </script>
 </body>
</html>
天际的海浪 2016-04-01
  • 打赏
  • 举报
回复
input标签中 onclick="test(this)" 在浏览器解析后,会自动转换成 javascript的事件函数 input对象.onclick = function (event) { test(this) } 当以对象里的方法的方式调用函数时,函数内的 this 是调用该函数的对象 当函数被用作事件处理函数时,它的this指向触发事件的元素
cocotsau 2016-04-01
  • 打赏
  • 举报
回复
this指的是当前对象,this可以理解为一个指针/变量,指向当前发生click事件的对象,即input控件
lf1218 2016-04-01
  • 打赏
  • 举报
回复
新手上路,还望各位大神指导指导,小女子在这里谢过了!

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧