将元素追加为元素之后的兄弟元素?

Tru*_*an1 16 html javascript dom

如何使用纯Javascript在HTML元素后添加文本?有appendChild但是这会在元素中添加它.我宁愿把它添加为像这样的元素之后的兄弟:

<img id="myimg" src="..." />

<script>
  var myimg = document.getElementById('myimg');
  myimg.appendAFTER('This is my caption.'); //pseudo-code and doesn't really work
</script>
Run Code Online (Sandbox Code Playgroud)

我想最终得到这个:

<img id="myimg" src="..." />
This is my caption.
Run Code Online (Sandbox Code Playgroud)

什么是after()jQuery 的Javascript等价物?

I a*_*ica 31

退房和(小提琴):Node.insertBefore()Node.nextSibling

var myimg = document.getElementById('myimg');
var text = document.createTextNode("This is my caption.");
myimg.parentNode.insertBefore(text, myimg.nextSibling)
Run Code Online (Sandbox Code Playgroud)

或(小提琴):Element.insertAdjacentHtml()

var myimg = document.getElementById('myimg');
myimg.insertAdjacentHTML("afterend", "This is my caption.");
Run Code Online (Sandbox Code Playgroud)

  • 这些是“更好的实践”还是更有效?谢谢! (4认同)

kca*_*k11 10

请使用以下代码:

<img id="myimg" src="..." />

<script>
  var myimg = document.getElementById('myimg');
  var txt=document.createElement("span");
  txt.innerHTML="Whatever text you want to write . . .";
  if(myimg.nextSibling){
    myimg.parentNode.insertBefore(txt,myimg.nextSibling);
  }else{
    myimg.parentNode.appendChild(txt);
  }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 您不需要检查“.nextSibling”。如果引用节点为“null”,“insertBefore()”将愉快地追加新节点。 (9认同)