我刚刚学习javascript。在谷歌 Chrome 控制台上测试东西我最终得到了这个:
<html>
<head></head>
<body>
<div id="divi">
<button id="butti">Click Me</button>
</div>
</body>
</html>
还有Js:
function cBoton (){
var getDiv = document.getElementById("divi");
getDiv.removeChild(getDiv.lastChild);
};
var getButton = document.getElementById("butti");
getButton.addEventListener("click", cBoton);
我希望按钮一点击就被删除。 ¿为什么只有在第二次点击后才起作用?
tx!
标记中元素的
.lastChild
是 ""
(尝试使用 console.log(getDiv.lastChild)
进行澄清)。
使用它来确保您正在删除所需的元素:
function cBoton() {
var getDiv = document.getElementById("divi");
getDiv.removeChild(getButton);
};
第一次单击时,
divi
的最后一个子节点是包含按钮后空格的文本节点,并且该节点将被删除。第二次单击时,该按钮是最后一个子按钮。
无价之宝..
修改源码;
/* .css */
div :nth-child(even){background-color: #f2f2f2}
/*.js */
function addDiv() {
var para = document.createElement("p");
var node = document.createTextNode('textHere'); // add cell code here
para.appendChild(node);
var element;
element = document.getElementById("div1"); // to add div id recursion
element.appendChild(para);
}
function cBoton (){
var getDiv = document.getElementById("div1");
getDiv.removeChild(getDiv.lastChild);
}
var getButton = document.getElementById("div1");
getButton.addEventListener("click", cBoton);
/* HTML */
<html>
<head></head>
<body>
<button onclick="addDiv()">add</button>
<button onclick="cBoton()">Click Me</button>
<frameset><legend>recursions</legend>
<div id="div1"></div>
</frameset>
</body>
</html>
副驾驶更新!
您的第一个代码片段需要单击两次才能删除按钮的原因是 DOM(文档对象模型)的结构方式。当您第一次加载页面时,ID 为 divi 的 div 元素只有一个子元素,即按钮元素。但是,当您第一次单击按钮时,由于按钮元素后面有空格或换行符,会在 div 内创建一个文本节点(在 DOM 中被视为子节点)。因此,按钮不再是最后一个子节点,文本节点才是。这就是为什么需要点击两次才能删除按钮。
对于您的第二个代码片段,您似乎试图在单击“添加”按钮时向 div 添加一个段落,并在单击“单击我”按钮时删除 div 的最后一个子级。但是,您的代码中有一个错误。您尝试向 div 添加事件侦听器,而不是“Click Me”按钮。这是更正后的版本:
function addDiv() {
var para = document.createElement("p");
var node = document.createTextNode('textHere');
para.appendChild(node);
var element = document.getElementById("div1");
element.appendChild(para);
}
function cBoton() {
var getDiv = document.getElementById("div1");
getDiv.removeChild(getDiv.lastChild);
}
var getButton = document.getElementById("butti"); // Corrected here
getButton.addEventListener("click", cBoton);
<html>
<head></head>
<body>
<button id="addButton" onclick="addDiv()">add</button> <!-- Added id here -->
<button id="butti" onclick="cBoton()">Click Me</button> <!-- Added id here -->
<frameset><legend>recursions</legend>
<div id="div1"></div>
</frameset>
</body>
</html>
这应该按预期工作。 “添加”按钮将向 div 添加一个段落,“Click Me”按钮将删除该 div 的最后一个子级。使用 JavaScript 时,请记住始终检查 DOM 的结构和元素的 id。快乐编码!