Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript[对象HTMLCollection]_Javascript_Html - Fatal编程技术网

Javascript[对象HTMLCollection]

Javascript[对象HTMLCollection],javascript,html,Javascript,Html,我正在使用Javascript创建一个列表网站(作为一个辅助项目) 我使用代码: var myNodelist = document.getElementsByTagName("LI"); 这是可行的,但是 localStorage.setItem("myNodelist", document.getElementsByTagName("LI")); 没有。它只返回[object HTMLCollection]。有人知道为什么吗 //创建一个“关闭”按钮并将其附加到每个列表项中 var m

我正在使用Javascript创建一个列表网站(作为一个辅助项目)

我使用代码:

var myNodelist = document.getElementsByTagName("LI");
这是可行的,但是

localStorage.setItem("myNodelist", document.getElementsByTagName("LI"));
没有。它只返回
[object HTMLCollection]
。有人知道为什么吗

//创建一个“关闭”按钮并将其附加到每个列表项中
var myNodelist=document.getElementsByTagName(“LI”);
var i;
对于(i=0;i

身体{
保证金:0;
最小宽度:250px;
}
/*在元素的总宽度和总高度中包含填充和边框*/
* {
框大小:边框框;
}
/*从列表中删除边距和填充*/
保险商实验室{
保证金:0;
填充:0;
}
/*设置列表项的样式*/
ulli{
光标:指针;
位置:相对位置;
填充:12px 8px 12px 40px;
列表样式类型:无;
背景:#eee;
字号:18px;
过渡:0.2s;
/*使列表项不可选择*/
-webkit用户选择:无;
-moz用户选择:无;
-ms用户选择:无;
用户选择:无;
}
/*将所有奇数列表项设置为其他颜色(斑马条纹)*/
第n个孩子(单数){
背景#f9f9f9;
}
/*悬停时背景颜色较深*/
ulli:悬停{
背景:ddd;
}
/*单击后,添加背景色并删除文本*/
保险商实验室检查{
背景:#888;
颜色:#fff;
文字装饰:线条贯通;
}
/*单击时添加“选中”标记*/
ul li.已检查::之前{
内容:'';
位置:绝对位置;
边框颜色:#fff;
边框样式:实心;
边框宽度:0 2px 2px 0;
顶部:10px;
左:16px;
变换:旋转(45度);
高度:15px;
宽度:7px;
}
/*设置关闭按钮的样式*/
.结束{
位置:绝对位置;
右:0;
排名:0;
填充:12px 16px 12px 16px;
}
.关闭:悬停{
背景色:#168e00;
颜色:白色;
}
/*标题样式*/
.标题{
背景色:#168e00;
填充:30px 40px;
颜色:白色;
文本对齐:居中;
}
/*清除标题后的浮动*/
.标题:之后{
内容:“;
显示:表格;
明确:两者皆有;
}
/*为输入设置样式*/
输入{
保证金:0;
边界:无;
边界半径:0;
宽度:75%;
填充:10px;
浮动:左;
字体大小:16px;
}
/*设置“添加”按钮的样式*/
.addBtn{
填充:10px;
宽度:25%;
背景#d9d9d9;
颜色:#555;
浮动:左;
文本对齐:居中;
字体大小:16px;
光标:指针;
过渡:0.3s;
边界半径:0;
}
.addBtn:悬停{
背景色:#bbb;
}
杂货:
添加

如果您编写
var List=document.getElementsByTagName(“List”)
在您的
控制台.log(list)
中,您将看到您需要的元素列表,对吗

console.log也以同样的方式显示数组,数组的每个元素都会打印到日志中,而无需编写
for()
循环

但是,如果要使用数组,则必须为循环编写for

[对象HTMLCollection]

这意味着有一个HTML对象数组,要处理数据,必须使用for循环或数组方法,然后才能将其存储在本地存储器中

尝试使用具有的对象集合创建数组

var arr = Array.from(htmlCollection); 
然后保存为原样或使用转换为json字符串

 var myJsonString = JSON.stringify(arr);

首先,我相信这会有所帮助:如果使用id从domapi中查找dom元素会更好。 第二:您需要使用
.innerText
访问列表项的文本内容

<ul>
  <li id="item">hello</li>
</ul>

localStorage.setItem("myNodelist",document.getElementById("item").innerText);
    你好
localStorage.setItem(“myNodelist”,document.getElementById(“item”).innerText);
您希望发生什么?只能将字符串保存在本地存储中。保存DOM元素意味着什么?本地存储只能存储字符串,因此document.getElementsByTagName将转换为它的字符串表示形式,它恰好是
[object HTMLCollection]
它存储的是一个列表。是否有其他方法可以做到这一点?如果这些是输入字段,则需要循环它们并使用
.value
收集它们的值。然后可以将值数组转换为字符串