2017 업데이트 :
노드의 컨텐츠 호출을 선택하려면 다음을 수행하십시오.
window.getSelection().selectAllChildren(
document.getElementById(id)
);
이것은 IE9 + (표준 모드)를 포함한 모든 최신 브라우저에서 작동합니다.
실행 가능한 예 :
function select(id) {
window.getSelection()
.selectAllChildren(
document.getElementById("target-div")
);
}
#outer-div { padding: 1rem; background-color: #fff0f0; }
#target-div { padding: 1rem; background-color: #f0fff0; }
button { margin: 1rem; }
<div id="outer-div">
<div id="target-div">
Some content for the
<br>Target DIV
</div>
</div>
<button onclick="select(id);">Click to SELECT Contents of #target-div</button>
더 이상 사용되지 않으므로 아래의 원래 답변은 더 window.getSelection().addRange(range); 이상 사용되지 않습니다.
원래 답변 :
위의 모든 예는 다음을 사용합니다.
var range = document.createRange();
range.selectNode( ... );
그러나 문제는 DIV 태그 등을 포함하여 노드 자체를 선택한다는 것입니다.
OP 질문에 따라 노드의 텍스트를 선택하려면 대신 전화해야합니다.
range.selectNodeContents( ... )
따라서 전체 스 니펫은 다음과 같습니다.
function selectText( containerid ) {
var node = document.getElementById( containerid );
if ( document.selection ) {
var range = document.body.createTextRange();
range.moveToElementText( node );
range.select();
} else if ( window.getSelection ) {
var range = document.createRange();
range.selectNodeContents( node );
window.getSelection().removeAllRanges();
window.getSelection().addRange( range );
}
}
document.getElementById('selectable')로this. 그런 다음 컨테이너의 여러 div와 같이 여러 요소에 기능을 눈에jQuery('#selectcontainer div').click(selectText);