e.target과 parentNode

e.target and parentNode

e.target은 클릭이벤트가 일어난 태그를 알려준다.

e.target.parentNode는 클릭된 것의 부모 태그를 말한다.

e.target.parentNode는 클린된 것의 조상(할머니) 부모 태그를 말한다.

반대로, e.target.children 은 자식 태그를 말한다.

var 바디 = document.body;
var 테이블 = document.createElement('table');//테이블 원소 생성
var 줄들 = [];
var 칸들 = [];
var= 'X';

var 비동기콜백 = function(이벤트) {
    //칸을 클릭했을 떄 몇 칸인지를 아는 것이 핵심이다.
    //이벤트.target 은 클릭이벤트가 일어난 태그를 알려준다.
    //이벤트.target.parentNode 는 클릭된 애의 부모 태그를 말한다!
    //이벤트.target.childeren 은 자식 노드로 간다.
    console.log(이벤트.target);//td(칸)
    console.log(이벤트.target.parentNode);//현재 태그(td 칸)에서 부모 태그(tr 줄)로 갈 수 있다.
    console.log(이벤트.target.parentNode.parentNode);//현재 태그(td 칸)에서 할머니 태그(테이블)로 갈 수 있다.

    var 몇줄 = 줄들.indexOf(이벤트.target.parentNode);//0,1,2 중 몇번째 줄인지.
    console.log('몇줄',몇줄);
    var 몇칸 = 칸들[몇줄].indexOf(이벤트.target);
    console.log('몇칸',몇칸);

    //input의 값은 value, 태그 안 글자는 textContent. 혼동주의!
    if(칸들[몇줄][몇칸].textContent !== '') {//칸이 이미 채워져있는가?
        console.log('빈칸아닙니다.');
        
    } else {
        console.log('빈칸입니다.');
        칸들[몇줄][몇칸].textContent = 턴;
        //상대에게 차례를 넘겨준다.
        if(턴 === 'X') {
= 'O';
        } else {
= 'X';
        }
    }
};
for(var i = 1; i <= 3 ; i++) {
    var= document.createElement('tr');//i는 1부터 3까지 html 줄 생성
    줄들.push(줄);//생성한 줄을 '줄들'배열에 추가.
    칸들.push([]);//배열단위로 데이터를 푸시한다.
    for(var j = 1; j <= 3; j++) {
        var= document.createElement('td');
        칸들[i-1].push(칸);//한 줄당 3칸씩 추가.
        //칸을 눌렀을 때 동작 구현
.addEventListener('click',비동기콜백);
.appendChild(칸);
    }
    테이블.appendChild(줄);
}
바디.appendChild(테이블);
console.group('줄들',줄들,'칸들',칸들);

Last updated