Here 아래 내 문제의 샘플이며, 요소 자체를 점점 동일한 코드 HTML입니다요소의 ID를 전달하지만
<button id='preview_btn'>Add</button>
<table id="point_tbl">
</table>
자바 스크립트
var pointList = [];
function deletePoint(id) {
console.log(id); // should be string but turns out to be the tr element
for (var i = 0; i < pointList.length; i++) {
if (pointList[i].id == id) {
pointList.splice(i, 1);
document.getElementById(id).remove();
document.getElementById(id + "item").remove();
}
}
}
function getTemplate(obj) {
var id = obj.id + "item";
var aa = obj.id;
var row = "<tr id = '" + id + "'><td>" + obj.sn + "</td><td>" + obj.x + "</td><td>" + obj.y + "</td><td>" + obj.tx + "</td><td>" + obj.ty + "</td><td>" + obj.lbl + "</td><td><button class='del_point' onclick = 'deletePoint("+id+");'>Delete</button></td></tr>";
return row;
}
document.getElementById("preview_btn").onclick = function(event) {
var id = getUniqueId();
var obj = {sn: pointList.length, x: 10, y: 10, tx: "0.5", ty: "0.5", lbl: "", id: id};
$('#point_tbl').append(getTemplate(obj));
pointList.push(obj);
}
function getUniqueId() {
if (!getUniqueId.idList) {
getUniqueId.idList = [];
}
var id = "uniqueID" + Math.round(Math.random() * 1000 + 1);
if (getUniqueId.idList.indexOf(id) != -1) {
return getUniqueId();
} else {
getUniqueId.idList.push(id);
}
return id;
}
때 Add
버튼 버튼을 클릭하면 새로운 행이 추가됩니다. 새로 추가 된 버튼 deletePoint
은 getTemplate
기능을 사용하는 바인드 기능입니다. deletePoint
함수는 getTemplate
함수로 만든 행 (tr)의 ID를 받아들입니다.
전달 된 매개 변수를 deletePoint
함수에 로깅했습니다. 나는 이것이이 행의 id (기본적으로 문자열)가 될 것을 기대했지만 전체는 tr
요소로 밝혀졌습니다.
문제를 해결할 수 없습니다. 도움주세요.
감사를 해결하기 위해 당신의 삭제 기능을 변경할 수 있습니다,이 작동하지만, 현재의 방식에 문제를 이해할 수 없습니다. 너 나 한테 설명해 줄 수있어? –
@ThankYouSRT 내가 편집했습니다. 그거 분명해? –