比如有10个button遍历后我要得到当前按钮的值,用jquery很好实现但是原生js的this指向了window对象怎么弄?
把单击事件里面的this当做参数传给下面那个函数
document.getElementById(id).onclick = function(e){
var e = e || window.event; var target = e.target || e.srcElement; if(target.toLowerCase()=="button"){ target.style.background="red"; }
}
this的指针是指向调用它的那个对象,即:
for(var i=0;i<obj.length-1;i++){
obj[i].onclick=function(){ console.log(this);//obj[i] }
}
我猜你可能这样写:
document.getElementsByTagName('button')[0].onclick=function(){
clickButton()
}
function clickButton(){
this.style.background="red"
}
简单的讲,当this不是你预期要的对象的时候,估计是作用域问题
好好检查一下this所在的上下文环境,看看function ..(){......}
这个格式是定义在那个对象上的
我就用3个按钮做实验吧,是下面这样吗?
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test</title> </head> <body> <button>1</button> <button>2</button> <button>3</button> <script> var btns = document.getElementsByTagName("button"); for(var i = 0; i < btns.length; i++) { btns[i].onclick = function(){ alert(this.innerHTML); } } </script> </body> </html>