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

Button controlled functions to create list items, populate them, then edit. curious errors occurring. code and comments inside

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

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 函数仅适用于数字 0 [技术上是 1,因为我为不知道它从 0 开始的用户内置了减法] 'listNum' 的用户输入。任何其他值 returns 错误“未捕获类型错误:无法在 'Node' 上执行 'replaceChild':参数 2 不是 'Node' 类型。”

尝试修复 1:

已尝试 'parseInt' 转换为数字(尽管我的理解是 JS 是一种不需要这种格式的 "loose script" 语言)。 也尝试过 'document.createTextNode(prompt(...));' 并收到相同的错误消息。

第 2 期:

它会删除列表项并仅替换为 'edit' 文本

尝试修复 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);   
}