여러 개의 버튼이있는이 토글 기능이 있습니다.여러 개의 onclick 이벤트/요소를 결합하는 방법
var button1 = document.querySelector('#button1');
var button2 = document.querySelector('#button2');
var button3 = document.querySelector('#button3');
var toggleState = function (elem, one, two) {
var elem = document.querySelector(elem);
elem.setAttribute('data-state', elem.getAttribute('data-state') === one ? two : one); //ternary operator
};
button1.onclick = function (e) {
toggleState('#div1', 'open', 'closed');
e.preventDefault();
};
button2.onclick = function (e) {
toggleState('#div2', 'open', 'closed');
e.preventDefault();
};
button3.onclick = function (e) {
toggleState('#div3', 'open', 'closed');
e.preventDefault();
};
나는 이것이 매우 지연된 것처럼 보입니다. 변수를 결합하기 위해 querySelectorAll을 시도했지만 작동하지 않습니다. 나는 왜 그런지 알 것 같아. 그러나 나는 더 능숙하게 스크립트를 작성하는 방법을 이해할 수 없다. (능숙하게. 존경할만한 것이 더 나은 단어입니다)
변수와 onclicks를 어떻게 조합하여 코드가 중복/지연/우스운 것처럼 보이지 않게 할 수 있습니까?
저는 자바 스크립트를 올바르게 작성하는 법을 배우려고합니다. 너무 오랫동안 jQuery에 중독되었습니다 & 저는 실제로 자바 스크립트를 작성하는 방법을 모르겠다는 것을 깨달았습니다. 그래서 나는 배우려고 노력하고 있습니다.
당신은 익명의 배열을 사용'[ '# 단추 1', '# 단추 2']처럼 반복 할 수있다. foreach는 (항목, 인덱스) {// 핸들 항목 같은 로직}' –
버튼의 가장 가까운 조상 요소를 찾거나 (그러한 요소로 감싸는) 조상에게 하나의 청취자 만 붙이십시오. 그런 다음 핸들러 함수에서 해당 id (또는 data- * 속성 사용)에 따라 버튼을 변경하고 id의 숫자 부분을 추출하여 div가 전환되도록 참조 할 수 있습니다. 또한'event.target'는 클릭 된 버튼에 대한 참조를 포함합니다. – Teemu
코드를 작성하기에 충분합니까? 익명의 배열을 검색하여 작동 코드를 해킹하려고 시도하지만 시간이 걸릴 수 있습니다. – HackYa