单击时删除文本-JavaScript

时间:2019-05-03 04:31:24

标签: javascript html5

我正在编写一个代码,可以使用两个函数-add_in()和del_in()来添加列表元素文本,并在单击文本中的特定部分时将其删除。 因此,如果我单击添加按钮,则应添加“阅读(del)” 当我单击del文本时,应将其删除。 我在这里获取了clicked元素的ID,并使用了事件目标。

在add_in()中,它添加了list元素,并且我使用innerHTML更改了其内容,因此它包含(del)的p元素。 单击时,delNode应该启动del_in()。 在del_in()中,它具有addEventListener来获取被单击元素的ID,如果它是(del),则将其删除。

html

<ol id='interests'>
//should be added here.
</ol>
<input type="text" id='add_int'></input>
<input type="button" value="add" id='add_btt' onclick='add_in();'>

javascript

var idcount = 0;

function add_in() {
    nodeId = "new" + idcount;
    ++idcount;
    var interest = document.getElementById('add_int').value;
    var newNode = document.createElement("li");
    newNode.setAttribute("id", nodeId);
    newNode.innerHTML = interest + "<p id='del" + nodeId + "'>(del)</p>";
    document.getElementById("interests").appendChild(newNode);
    var delNode = document.getElementById('del' + nodeId);
    delNode.setAttribute("onclick", "del_in();");

}

function del_in() {
    var clickId = "";
    document.addEventListener("click", function(e) {
        clickId = e.target.id;
    });
    if (clickId.includes("delnew")) {
        var clickEle = document.getElementById(clickId);
        clickEle.parentNode.removeChild(clickEle);
    }
}

它可以添加,但不能删除。单击时没有任何反应。 如果我在控制台中键入“ newNode”,它会显示:VM247:1 Uncaught ReferenceError:未定义delNode。单击元素后也未定义ClickId。

感谢您的任何帮助。 让我知道代码看起来过于复杂还是问题过于笼统。我会编辑。

1 个答案:

答案 0 :(得分:1)

var idcount = 0;

function add_in() {
    nodeId = "new" + idcount;
    ++idcount;
    var interest = document.getElementById('add_int').value;
    var newNode = document.createElement("li");
    newNode.setAttribute("id", nodeId);
    newNode.innerHTML = interest + "<p id='del" + nodeId + "'>(del)</p>";
    document.getElementById("interests").appendChild(newNode);
    var delNode = document.getElementById('del' + nodeId);
    delNode.setAttribute("onclick", "del_in(this);");

}

function del_in(e) {    
    e.parentNode.remove();
}
<ol id='interests'>
//should be added here.
</ol>
<input type="text" id='add_int'></input>
<input type="button" value="add" id='add_btt' onclick='add_in();'>

您可以尝试选择父元素并将其更改为e.parentNode.remove();