왜 이곳에서는 onclick 이벤트가 발생하지 않나요? jquery에서 현재 클릭된 li의 DOM 객체를 얻을 수 있다면, JS에서는 이렇게 사용할 수는 없을까요?
수정:
여러분 감사합니다. 이전에는 jquery를 사용했는데, 지금 js를 다시 보니 많은 문제가 발견되었습니다. 앞으로는 이런 어리석은 실수를 다시는 하지 않을 거라 감동받았습니다 ^_^.
클릭하여 이 이벤트를 실행할 수 있나요? SegmentFault를 사용할 수 있습니다.
하지만 코드에 약간의 문제가 있습니다. getElementsByTagName은 배열과 유사한 객체를 반환합니다
이를 탐색한 다음 각 요소에 onclick 값을 할당해야 합니다
는 this의 이유가 아닙니다.
this
onclick 是 DOM 的事件。但是此时的 lis DOM이 아니라 DOM의 모음입니다.
onclick
lis
jQuery는 $("ul li")이 jQuery 객체를 반환하기 때문에 이를 처리할 수 있습니다. click 함수가 호출되면 jQuery는 암시적으로 루프를 사용합니다.
$("ul li")
lis 很像数组,但是却不是数组。因此可以使用 Array.from 함수를 사용하면 이를 실제 배열로 변환할 수 있습니다.
Array.from
lis = document.getElementsByTagName("li")는 배열을 가져옵니다. 이벤트를 어떻게 바인딩해야 하나요?
클릭 이벤트를 작성하려면 .onclick()을 사용하지 마세요. addEventListener('click', function(){console.log(this)})를 사용하여 클릭 이벤트가 실행될 수 있는지 확인하세요. 당신이 lis를 가지고 있기 때문입니다. 이런 이유로 onclick 배열이 작동하지 않습니까?
두 번째 코드는 잘못 작성되었습니다. lis는 dom 객체가 아닌 배열이므로 onclick 설정이 쓸모가 없습니다이렇게 변경하세요
getElementsByClassName这个方法吧,把getElementsByTagName를 사용하여 직접 캡슐화하면 DOM 연산으로 사용할 수 있습니다
getElementsByClassName
getElementsByTagName
위 그림과 같이 lis는 객체의 배열로 인쇄됩니다. 아이디어에 따라 lis를 순회하여 각 li 객체에 onclick을 바인딩해야 합니다.
클릭하여 이 이벤트를 실행할 수 있나요? SegmentFault를 사용할 수 있습니다.
하지만 코드에 약간의 문제가 있습니다. getElementsByTagName은 배열과 유사한 객체를 반환합니다
이를 탐색한 다음 각 요소에 onclick 값을 할당해야 합니다
는
this
의 이유가 아닙니다.onclick
是 DOM 的事件。但是此时的lis
DOM이 아니라 DOM의 모음입니다.jQuery는
$("ul li")
이 jQuery 객체를 반환하기 때문에 이를 처리할 수 있습니다. click 함수가 호출되면 jQuery는 암시적으로 루프를 사용합니다.lis
很像数组,但是却不是数组。因此可以使用Array.from
함수를 사용하면 이를 실제 배열로 변환할 수 있습니다.lis = document.getElementsByTagName("li")는 배열을 가져옵니다.
이벤트를 어떻게 바인딩해야 하나요?
클릭 이벤트를 작성하려면 .onclick()을 사용하지 마세요. addEventListener('click', function(){console.log(this)})를 사용하여 클릭 이벤트가 실행될 수 있는지 확인하세요. 당신이 lis를 가지고 있기 때문입니다. 이런 이유로 onclick 배열이 작동하지 않습니까?
두 번째 코드는 잘못 작성되었습니다. lis는 dom 객체가 아닌 배열이므로 onclick 설정이 쓸모가 없습니다
으아악이렇게 변경하세요
getElementsByClassName
这个方法吧,把getElementsByTagName
를 사용하여 직접 캡슐화하면 DOM 연산으로 사용할 수 있습니다위 그림과 같이 lis는 객체의 배열로 인쇄됩니다. 아이디어에 따라 lis를 순회하여 각 li 객체에 onclick을 바인딩해야 합니다.