首页 文章

将文本插入div标签[重复]

提问于
浏览
-1

这个问题在这里已有答案:

我有一个 div 标签,后跟 p 标签,我需要插入文本 . 更改div的 innerHTML 并不确定如何获取 p 的路径,因为它没有任何属性 .

这是HTML,我需要更改 foo 值:手动插入foo值只是为了演示请求的结果 .

<div class="ms-rtestate-write ms-rteflags-0 ms-rtestate-field" id="Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte" role="textbox" aria-haspopup="true" aria-labelledby="Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte_label" style="min-height: 84px;" contenteditable="true" aria-autocomplete="both" aria-multiline="true" RteDirty="false"><p><span id="ms-rterangepaste-start"></span><span id="ms-rterangecursor-start" RteNodeId="1"></span><span id="ms-rterangecursor-end"></span>foo​</p></div>

如上所述,我试图通过Javascript更改值,但它没有帮助那么多,因为我认为我需要更改 p .

IJavaScriptExecutor js = (IJavaScriptExecutor)_webdriver; js.ExecuteScript("document.getElementById('Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte').innerHTML=" + Text);

1 回答

  • 1

    选择它

    document.getElementById(theID).getElementsByTagName('p')[0]
    // Or
    document.querySelector('#theID p')
    

    使用querySelector需要将 $ 转义为 \\$ 并追加html使用 +=

    最后在文本之前添加 <br> 以将换行符插入到contentEditable中

    js.ExecuteScript("document.querySelector('#Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_\\$TextField_inplacerte p').innerHTML +=" + Text);
    

    测试:

    var Text = "<br>bar";
    setTimeout(function() {
      document.querySelector('#Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_\\$TextField_inplacerte p').innerHTML += Text
    }, 777);
    
    <div class="ms-rtestate-write ms-rteflags-0 ms-rtestate-field" id="Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte" role="textbox" aria-haspopup="true" aria-labelledby="Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte_label"
      style="min-height: 84px;" contenteditable="true" aria-autocomplete="both" aria-multiline="true" RteDirty="false">
      <p><span id="ms-rterangepaste-start"></span><span id="ms-rterangecursor-start" RteNodeId="1"></span><span id="ms-rterangecursor-end"></span>foo​</p>
    </div>
    

相关问题