我想在游标位置动态插入childnode并设置焦点
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var span = document.createElement("span");
span.id= 'ttt';
span.style.color = "red";
span.appendChild(selectionContents);
span.innerText = 'dfdf';
range.insertNode(span);
我可以设置节点焦点,但chileNode不能
dom.focus();//OK
dom.lastElementChild.focus();//can't
log lastElementChild我可以看到span和id =' ttt' .....
答案 0 :(得分:0)
使用window.location.hash = '#ttt';
这将滚动到元素
答案 1 :(得分:0)
正如我已经评论过的那样,span
没有焦点事件。以下是SO Post - Which HTML elements can receive focus?供参考。
要回答您的问题,您可以尝试添加具有readonly
属性的文本框,并添加适当的css以将其模仿为标签。
我在:focus
添加了css。你应该创建一个类并切换这个类。
function focusDiv() {
document.getElementById("divTT").focus();
}
function focusSpan() {
document.getElementById("lblTT").focus();
}
function focusText() {
document.getElementById("txtTT").focus();
}

div:focus{
background:blue;
}
span:focus{
background:blue;
}
input:focus{
background:blue;
font-size:20px;
font-family:Gorgia;
color:#eee;
}
.label{
border:0px;
}

<div id="test">Test
<br/>
<span id="lblTT">Span</span>
<br/>
<div id="divTT">Div</div>
<input type="text" id="txtTT" class="label" value="Text" readonly>
</div>
<button onclick="focusSpan()">Focus Span</button>
<button onclick="focusDiv()">Focus Div</button>
<button onclick="focusText()">Focus Text</button>
&#13;