내가 뭘 하려는지 DOM 객체를 나중에 몇 가지 의미있는 방법을 제공합니다 JS 개체의 인스턴스를 연결하는 것입니다;)이 시점에서 난 그냥 내 JS 처리하려는 참조를 그대로 유지하면서 click 이벤트를 처리하십시오.JS onclick 잘못된 객체
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
<script type="text/javascript">
// my object, which will hold a reference to a single DOM object
obj = function(domobj) {
this.o = domobj;
my = this;
var ref = my.click;
this.o.onclick = ref;
}
// my objects click function
obj.prototype.click = function() {
alert(my.o.innerHTML);
}
// create objects with references
$(document).ready(function() {
o1 = new obj(document.getElementById('b1'));
o2 = new obj(document.getElementById('b2'));
});
</script>
</head>
<body>
<button id="b1">button 1</button>
<button id="b2">button 2</button>
</body>
</html>
예상 결과 : 버튼 1을 클릭, 텍스트 "버튼 1"경고해야한다.
현재 결과 : 버튼 1을 클릭하면 텍스트 "버튼 2"가 경고됩니다.
o1과 o2가 해당 DOM 객체에 대한 올바른 참조를 유지하더라도 obj의 잘못된 인스턴스가 click 이벤트에서 발생한다는 사실을 지금까지 알아 냈습니다.
어떻게 해결할 수 있습니까?
도움 주셔서 감사합니다. 클릭 이벤트가 트리거 시간에 의해, 항상 마지막 호출에 의해 반환 된 객체를 참조 할 수 있도록
안부, 클레멘스
안녕하세요. - 도움 주셔서 감사합니다. 분명히 나는 우연히 전역 변수를 생성 함에도 불구하고 클로저를 올바른 방법으로 사용하는 방법을 이해하지 못했다. 사용자 지정 개체는 다양한 설정 (서식 지정 단추 등)을 사용하여 인라인 편집기의 개별 인스턴스를 나타내므로 필요합니다. 어쨌든 - 요점이 있습니다 - 정말 고마워요! – blacktarmac