อัพเดท 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( ... );
แต่ปัญหาคือมันเลือก Node เองรวมถึง DIV tag เป็นต้น
ในการเลือกข้อความของ Node ตามคำถาม 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);