在JS函数中传递“this”和“event”
Passing "this" and "event" in JS function
我有一个带有onclick事件的按钮,如下所示:
<button type="button" onclick="captions(event)">
<img src="someimg.png">
</button>
我需要能够在不使用 ID 引用它的情况下更改 img src。 我想传递"this"和事件(我需要做一些其他需要传递事件的事情),但我无法让它工作。 JS的示例如下:
function captions(event) {
this.src = this.src.replace("img2.png");
}
谢谢!
我建议不要使用内联事件处理程序。 您应该使用 JavaScript "不显眼地"绑定事件。
首先给按钮一个类:
<button type="button" class="captions">
<img src="someimg.png">
</button>
然后绑定事件:
window.onload = function(){
var captions = document.getElementsByClassName('captions');
for(var i = 0, len = captions.length; i < len; i++){
captions[i].addEventListener('click', function(event){
// this is your button, what you clicked on
// you need to get the image
var image = this.getElementsByTagName('img')[0];
// this.src.replace("img2.png") doesn't do what you think it does
// String.replace takes 2 parameters
image.src = '/your/new/image';
});
}
};
演示:http://jsfiddle.net/WcFzq/
您可以使用 event.target 属性 (http://www.w3schools.com/jsref/event_target.asp) 获取单击的元素。
function captions(event) {
event.target.src = "img2.png";
}
这是一个jsfiddle。
下面将解决您的问题。
function captions(event) {
var img = this.childNodes[0];
img.src = img.src.replace("img2.png");
}
如果你想做一个内联onclick
事件,你应该能够简单地将一个捕获元素的新变量传递到函数中,如下所示:
function captions(element, event) {
. . . do stuff . . .
}
然后,您将调用它,为 element
参数传递this
,如下所示:
<button type="button" onclick="captions(this, event);">
<img src="someimg.png">
</button>
相关文章:
- $(this).prop('property') vs. this.property
- issue with FB.Event.subscribe
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- Angularjs :$routeChangeStart event
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- reactjs this.refs vs document.getElementById
- JavaScript 中的嵌套函数和 “this” 关键字
- event.prventDefault()持续多久
- React+Meteor:this.ops返回未定义
- javascript中对象构造函数中的var属性与this.properties
- 在命名处理程序函数中使用 $(this) & event
- 在JS函数中传递“this”和“event”
- $(this) vs e.target or event.target in jquery
- Javascript bind "this" to event
- 我应该用“this”吗?或“;event.target"在javascript
- event.target.id VS event.currentTarget.id VS this.id
- 如何在定义的回调函数中访问$(this)和event
- jQuery事件绑定:this === Event.Target为真,但$(this) === $(event.targ
- JQuery: 'this'在JQuery-Event-Handler中无法访问