学习中所遇到的问题
斌斌学院任务四(动态删除元素)
要求
点击"左侧入",将input中输入的数字从左侧插入队列中;
点击"右侧入",将input中输入的数字从右侧插入队列中;
点击"左侧出",读取并删除队列左侧第一个元素,并弹窗显示元素中数值;
点击"右侧出",读取并删除队列又侧第一个元素,并弹窗显示元素中数值;
点击队列中任何一个元素,则该元素会被从队列中删除。
在做 出 的过程中用firstChild有时候得不到想要的元素,原因在于
文档里几乎每一样东西都是一个节点,空格、换行符都会被解释成节点,所以有时候元素的第一个子元素用firstChild得不到。
还有就是点击删除这一功能一直做不好,我的想法是遍历ul中的所有子元素(即li),点击之后用ul.removeChild就行。但是总有各种各样的问题。等js高程看完应该就有所收获。
这一点在了解了事件冒泡等之后知道了,如果点击子元素,事件会一层一层的往上冒泡,也就是说你点击了li,同时也点击了ul,也点击了document,应该将点击事件绑定在ul上,使用onclick function(event)参数event.target直接定位到具体点击的那个元素上。。。。好像还是不怎么理解这个。。。
关于removeChild函数需要注意的是:
每remove掉一个对象后,第一个对象是去掉了,原来document.getElementsByName()得到的集合中的第二个对象变成了第一个,length也-1。以后再通过循环使用removeChild时应该通过foreach来判断循环次数,这样就不会出错了。如果使用for的话,则每次都删第一个。
关于getElementsByTagName等get元素方法,发现返回的并不是一个真正的数组,而是一个类数组对象如下三种。使用Array.from()来转换成真正的数组。
HTMLCollection、NodeList以及NamedNodeMap这三个集合都是“动态的”,每当文档发生变化时,他们都会更新。他们将始终保持这最新、最准确的消息。