javascript - 按钮控制的功能用于创建列表项、填充它们,然后进行编辑。发生奇怪的错误。里面的代码和注释

标签 javascript nodes createelement

问题出现在最后一个函数中,该函数用于根据需要编辑列表

JSBin Link

代码:

// function to edit the desired list item with user input text
function editAList(){
   var list = document.getElementsByTagName("li");
   var uList = document.getElementById("List");
   var listLength = list.length; // not needed at the moment
   var listNum = parseInt(prompt("Enter the list number you would like to edit. Any number from 1 to "+listLength))-1;
   var edit = document.createTextNode(prompt("Enter the new list text"));
   uList.replaceChild(edit, uList.childNodes[listNum]);   
}

问题 1:

editAList 函数仅适用于用户输入“listNum”时的数字 0 [技术上为 1,因为我为不知道它从 0 开始的用户内置了一个减法]。任何其他值都会返回错误“Uncaught TypeError:无法在“Node”上执行“replaceChild”:参数 2 不是“Node”类型。”

尝试修复 1:

已尝试使用“parseInt”转换为数字(尽管我了解 JS 是一种“松散脚本”语言,不需要这种格式)。 还尝试过 'document.createTextNode(prompt(...));'以及并收到相同的错误消息。

问题 2:

它会删除列表项并仅替换为“编辑”文本

尝试修复 2:

尝试将 document.createElement("li") 放入 createTextNode 参数中 - 导致打印 OBJECT HTML LI 尝试将其放置在 createTextNode 方法之前和之后,但它生成了“i”错误

有什么想法吗?

最佳答案

使用编辑功能:

function editAList(){
    var list = document.getElementsByTagName("li");
    var uList = document.getElementById("List");
    var listLength = list.length;
    var listNum = parseInt(prompt("Enter the list number you would like to edit. Any number from 1 to "+listLength))-1;
    var edit = document.createTextNode(prompt("Enter the new list text"));
    list[listNum].innerHTML="";
    list[listNum].appendChild(edit);   
}

关于javascript - 按钮控制的功能用于创建列表项、填充它们,然后进行编辑。发生奇怪的错误。里面的代码和注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172368/

相关文章:

javascript - gulp 4中如何同时看sass和javascript

javascript - 语法错误 - 如何获取文本框的值

hadoop - 如何从客户端节点运行hadoop balancer?

javascript - 使用 Javascript 创建新的 div-tabs

javascript使用onclick创建一个按钮

javascript - 从 PDF 中提取字体名称

python - 为什么这个 while 循环会结束? node5 不是 NoneType。 (遍历链表)

node.js - 使用功能通过 Node 获取获取数据

Javascript 创建元素问题

javascript - 从 AngularJS url 中删除路由参数