사용자가 태그를 생성 할 수있는 페이지가 있습니다 (여기서는 stackoverflow 에서처럼). 그러면이 페이지가 백엔드로 보내 데이터베이스에 저장됩니다. 사용자는 태그를 만들 수 있지만 Submit을 누르기 전에 태그를 제거 할 수 있습니다.Javascript - 동적으로 생성 된 배열에서 특정 요소 제거
DOM에서 태그는 'x'버튼과 함께 생성됩니다. 'x'버튼은 DOM에서 요소를 제거하지만 배열에서 제거 할 때 문제가 발생합니다. 내가 솔루션에 도달 할 수있는 가장 가까운 것은 this question이었다. 그러나 나는 그것을 꽤 잘 작동시킬 수 없었다.
여기
window.tag_array = [];
$("#addtag").click(function() {
var tag = $("#input-tag").val();
//if tag is empty
if(!$('#input-tag').val()) {
alert("can't be empty");
} else {
//put tag.val into an array
tag_array.push(tag);
//add to DOM
$("#tagsbox")
.append("<div class='displaytag'><i>"+tag+"</i><input type='hidden' class='tag' value="+tag+"><button onClick='return false;' class='removetag'>x</button></div>");
//reset value in text area to null
$("#input-tag").val("");
//remove tag onclick
$('.removetag').click(function() {
$(this).parent().remove(); //remove tag from DOM
//splice from array
tag_array.splice(this, 1); //<--HERE IS PROBLEM (i think)
});
} //end else
alert(tag_array); //check array
});
결과적 접합부는 너무 많은 어레이 아이템을 꺼낸다이다 (I JQuery와 사용하고) 자바 스크립트이다.
또한 유사한 결과로
tag_array.splice(tag_array.indexOf(tag),1);
을 시도했습니다.
도와주세요! 미리 감사드립니다.
이 나는 심지어 내가 몰랐던 문제를 해결 않지만 의도 한대로, 그것은 꽤 작업을 수행, 감사합니다. 예를 들어, 'a', 'b'및 'c'의 세 태그를 추가 한 다음 'b'를 제거하면 배열이 태그 'a'를 연결합니다. 이견있는 사람? – bjurtown
'splice'는 제거하려는 초기 색인을 첫 번째 매개 변수로 취하기 때문입니다. 'this'를 인덱스로 전달했지만 요소의 실제 인덱스 위치를 얻으려면 $ (this) .index()를 사용할 수 있습니다. 그래서 그것은 다음과 같습니다 :'tag_array.splice ($ (this) .index(), 1); ' – LcSalazar
Ahh, @ Good.luck는 그것을 해결할 수있었습니다. 감사! – bjurtown