2009-12-11 4 views
0

일부 행을 동적으로 추가하는 표가 있으며 새 행에 하나의 입력 텍스트 요소를 추가합니다. 입력 요소의 텍스트가 변경되면 부모 행에 액세스하여 그 주위에서 처리하고 싶습니다. 하지만 내 코드는 입력 요소에 대한 부모 노드에 액세스 할 수 없습니다. 다음은 코드 샘플입니다. 이것에 대한 이유는 무엇입니까? 주위에 몇 가지 해결 방법이 있습니까?입력 요소의 부모 노드가 정의되지 않은 이유는 무엇입니까?

function onTrackIdChange(event) 
{ 
var textbox = event.target; 
console.log(textbox); 
// lets find the parent row 
var row = findParentRow(btn); 

findParentRow의 구현은 보이는 같은 :

function findParentRow(node) 
{ 
    var parent = node; 
    do 
    { 
     console.log(parent); 
     parent = parent.parentNode; 
    } 
    while (parent.nodeName != 'TR'); 
    return parent; 
} 

var newRow = document.createElement('tr'); 
dojo.place(newRow, row, "after"); 
var td = document.createElement('td'); 
dojo.place(td, newRow, 'last'); 
dojo.attr(td, 'colspan', 2); 
dojo.place(document.createTextNode('Track id:'), td, 'last'); 
var input = document.createElement('input'); 
dojo.place(input, td, 'last'); 
dojo.attr(input, 'type', 'text'); 
dojo.attr(input, 'value', 0); 
dojo.attr(input, 'onchange', "JavaScript: onTrackIdChange(event);"); 

onTrackIdChange의 초기 부분은 다음과 같습니다

은 행의 생성은 다음과 같이 보입니다 findParentRow 함수는 입력 요소에 대한 부모를 나타 내기 때문에 실패합니다. NT가 정의되지 않았습니다.

답변

3

전화가 findParentRow(btn)인데 btn 대신 textbox을 전달하면 안됩니까?

제출 한 코드의 btn 변수에 대한 참조가 없으므로 순서가 맞으면 다른 코드를 게시해야합니다.

+0

오 이런 바보 같은 실수 였어. 복사 붙여 넣기 작업 결과 : (많이 고맙습니다. –

0

노드가 정의되지 않았기 때문에 부모가 정의되지 않았습니다. onTrackIdChange에 btn이 정의되어 있지 않기 때문에 node는 findParentRow에 정의되어 있지 않습니다.

관련 문제