为什么不能将AdjecentHTML插入文本区域?

时间:2019-07-29 10:22:17

标签: javascript html dom

我无法成功使用

document.querySelector('textarea').insertAdjacentHTML('beforeend', '<span style="color:red">Danger</span>')
<textarea>TEXT</textarea>

在我的代码中。 Chrome插入转义的文本,FF不显示该节点。是否有有关此行为的任何文档?

更新:在函数名称上的类型旁边不起作用(这是预期的),因为<textarea>仅支持HTML5 Standard中指定的文本内容(请参见“ 内容模型:文本”)。 方法insertAdjacentHTML继承自HTMLElement-> Element。

边注:如果您先创建一个元素然后附加(附加但不显示)而不是将html显示为文本,则Chrome和Firefox的行为会有所不同。

1 个答案:

答案 0 :(得分:2)

文本区域的子节点:

  • 只能是文本节点。元素后代是禁止的。
  • 代表文本区域的默认值,而不是当前值。不能保证会更新当前值。

如果要更改文本区域的值,请使用$a属性。

a='echo {a,b}{c,d}'
$a
# => {a,b}{c,d}
eval `$a`
# => ac ad bc bd

a='echo ~'
$a
# => ~
eval "$a"
# => /home/amadan

foo=bar
a='echo $foo'
$a
# => $foo
eval "$a"
# => bar

a='echo $(which echo)'
$a
# => $(which echo)
eval "$a"
# => /usr/bin/echo

a='echo $((1+2))'
$a
# => $((1+2))
eval "$a"
# => 3

a='sort <(echo foo; echo bar)'
$a
# => sort: cannot read: <(echo: No such file or directory
eval "$a"
# => bar
# => foo

a='echo *'
$a
# => echo *.txt
eval "$a"
# => first.txt second.txt

如果要使用格式可编辑控件,则不要使用文本区域。参见making content editable