这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战
选项
JavaScript中我们可以通过appendChild方法把创建的选项添加到选择框中。或者通过add方法进行添加选项,不过add方法需要接收两个参数,分别为要添加的新选项和要添加到其前面的选项。如果我们想要在列表的尾部添加选项,我们第二个参数可以传递null。当我们第二个参数为undefined时,可以将选项添加到列表尾部。如果我们想要移出选项,我们可以使用removeChild和remove方法,removeChild方法传入的是要移除的选项。而remove方法接收一个参数,这个参数是要移除选项的索引值。除了这两种方法,我们还可以直接将选项设置为null,这样也可以移出选项。如果我们想要把所有选项都清空,可以使用循环的方法。
let zss = new Option("Option text", "Option value");
selectbox.add(newOption, undefined);
// removeChild
box.removeChild(box.options[0])
// remove
box.remove(0)
// null 移出第一项
box.options[0] = null
序列化
我们在表单序列化时,我们需要发送东西到服务器。比如禁用字段不会发送,字段名和值需要用&分割,复选框或者单选按钮只有选中的时候才会发送。多个字段每个选中项都有一个值。如果按钮类型为reset不会发送。此外如果表单中有fieldset元素,它就会出现在集合中,不会有type属性。如果type属性为undefined,就不会被纳入到序列化。我们还可以使用serialize函数返回的结果查询字符串的格式。
富文本
我们可以在html中嵌入iframe,然后通过designMode属性,将空白文档变成可以编辑的,这个属性有可能会存在两只值,默认值为off,另一个值为on。如果设置为on的话,整个文档都会变成可以编辑的,然后还可以通过键盘将文本进行加粗等操作。
contenteditable
当我们给任何元素指定contenteditable属性,那么该元素就会立即被编辑。这个属性可能存在三个值,分别为true表示开启,false表示关闭,inherit表示继承父元素的设置。
操作
如果我们想要获取富文本编辑区的选区可以使用getSelection方法,这个方法会暴露在document和window对象上,返回表示当前选中文本的Selection对象。每个selection都有很多属性和方法,例如anchorNode表示选区开始的节点,rangeCount表示选区中包含的DOM范围数量,containsNode表示确定给定节点是否包含在选区中,以及还有其他方法。当我们需要手动把富文本编辑内容提交到服务器,必须手动自己提交,我们可以在表单中添加一个隐藏字段,然后通过contenteditable或者内嵌窗格提取出html并更新他的值。