当我尝试使用范围时,我在控制台中收到此错误:
Uncaught IndexSizeError: Failed to execute 'setEnd' on 'Range': The offset 2 is larger than or equal to the node's length (0).
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
<script type="text/javascript">
function gotMark() {
var range = document.createRange();
var startNode = document.getElementById("dividTeste1").firstChild;
range.setStart(startNode, 0);
range.setEnd(startNode, 2);
var newNode = document.createElement("span");
range.surroundContents(newNode);
}
</script>
Run Code Online (Sandbox Code Playgroud)
和页面:
<div class="ui-block-a" id="divid" value="div1">
<div style="background-color: black; color: white; padding: 20px;" id="divid2">
<h2>London</h2>
<p id="dividTeste1">London is the capital city of England. It is the most
populous city in the United Kingdom, with a metropolitan area of
over 13 million inhabitants.</p>
</div>
<div style="background-color: black; color: white; padding: 20px;" id="divid2">
<h2>London</h2>
<p id="dividTeste2">London is the capital city of England. It is the most
populous city in the United Kingdom, with a metropolitan area of
over 13 million inhabitants.</p>
</div>
</div>
<input type="button" value="Marcar com range" onClick="gotMark()"
id="marcarconranger12" />
Run Code Online (Sandbox Code Playgroud)
我尝试按照dom range.setStart / setEnd的说明来选择开始和结束位置。
我用一行找到了该错误的解决方案:
function gotMark() {
var range = document.createRange();
var startNode = document.getElementById("dividTeste1").firstChild;
range.setStart(startNode, 0);
range.setEnd(startNode, 2);
var newNode = document.createElement("span");
newNode.className = 'highlight-yellow'; // <-- added
range.surroundContents(newNode);
}
Run Code Online (Sandbox Code Playgroud)
现在选择已经跨越了。
| 归档时间: |
|
| 查看次数: |
7281 次 |
| 最近记录: |