양식에 여러 dijit 양식 컨트롤이있는 table0이라는 테이블이 있습니다. 또한 새 테이블을 추가하고 마지막 테이블을 제거하기 위해 추가 및 제거 버튼이 있습니다. 각각의 새 테이블에는 1 씩 증가 된 ID가 있습니다. 따라서 add의 첫 번째 클릭은 table1, 두 번째 클릭 table2 등을 제공합니다. 제거 할 때마다 마지막 테이블이 제거됩니다.Dijit 양식 필드가 dojo.destroy 다음에 dojo.place에서 구문 분석되지 않습니다.
function getNewTable() {
dojo.query('#addTable').onclick(function() {
var tableNode = dojo.byId('table'+count);
count++;
dojo.xhrGet({url: 'addTable.html',
handleAs: "text",
preventCache: true,
content:{fieldId:count} ,
load: function(data) {
var newTable = dojo.place(data, tableNode, 'after');
dojo.parser.parse(newTable);
},
error: function(error) {
var newTable = dojo.place("AJAX error: " + error, deductNode, 'after');
dojo.parser.parse(newTable);
}
});
});
}
제거 기능이다 :
function removetable() {
dojo.query('#removeTable').onclick(function() {
if (count != 0) {
var tableNode = dojo.byId('table'+count);
count--;
dojo.xhrGet({url: 'removeTable.html',
handleAs: "text",
preventCache: true,
content: {fieldId:count},
load: function(data) {
dojo.destroy(tableNode);
},
error: function(error) {
var newTable = dojo.place("AJAX error: " + error, tableNode, 'after');
dojo.parser.parse(newTable);
}
});
}
});
}
카운트 변수 선언 전체적으로 여기
는 추가 기능이다.기능이 올바르게 작동합니다.
문제점은 tableNode를 제거한 후 테이블 노드를 추가 할 때 특정 인덱스의 노드가 dojo.parser.parse (newTable)를 실행하지 않을 때 발생합니다.
디버깅을 위해 일부 출력 문을 코드에 넣었으며 모든 참조가 정확합니다.
그래서 파괴 된 ID를 가진 노드를 배치하지 않는 한 잘 작동합니다.
예 : add를 클릭하고, table1 id가 생성되고, dojo가 구문 분석을 잘 수행하며, 모두 정상입니다. 제거를 클릭하면 table1이 파괴되지만 여전히 ok입니다. add를 다시 클릭하면 table1이 작성되고 dojo는이 노드를 구문 분석하지 않습니다.
내가 잘못 했나요?