按钮控制功能来创建列表项,填充它们,然后编辑。奇怪的错误发生。里面的代码和注释
Button controlled functions to create list items, populate them, then edit. curious errors occurring. code and comments inside
问题出现在最后一个用于根据需要编辑列表的函数中
代码:
// 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);
}
问题出现在最后一个用于根据需要编辑列表的函数中
代码:
// 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);
}