CẬP NHẬT 2017:
Để chọn nội dung của nút gọi:
window.getSelection().selectAllChildren(
document.getElementById(id)
);
Điều này hoạt động trên tất cả các trình duyệt hiện đại bao gồm IE9 + (ở chế độ tiêu chuẩn).
Ví dụ runnable:
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>
Câu trả lời ban đầu dưới đây đã lỗi thời vì window.getSelection().addRange(range);
đã bị phản đối
Câu trả lời gốc:
Tất cả các ví dụ trên sử dụng:
var range = document.createRange();
range.selectNode( ... );
nhưng vấn đề với điều đó là nó tự chọn Node bao gồm thẻ DIV, v.v.
Để chọn văn bản của Nút theo câu hỏi OP, bạn cần gọi thay thế:
range.selectNodeContents( ... )
Vì vậy, đoạn trích đầy đủ sẽ là:
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')
bằngthis
. Sau đó, bạn có thể thêm chức năng một cách không phô trương vào một số thành phần, ví dụ như một số div trong một thùng chứa:jQuery('#selectcontainer div').click(selectText);