3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
表格單元格內(nèi)的實(shí)際文本不能綁定到這樣的事件偵聽器。如果表格單元格中的文本在另一個(gè)標(biāo)簽中(例如段落、跨度、div 或其他),那么您可以使用一個(gè)小技巧通過比較事件target和事件currentTarget屬性來測試哪個(gè)元素觸發(fā)了事件。
您可以單擊單元格中的任意位置,除非您單擊該段落,否則不會發(fā)生任何事情 - 此時(shí)target它將不再currentTarget與事件偵聽器中注冊的相同。據(jù)我所知,僅使用表格單元格中的原始文本無法做到這一點(diǎn) - 最終你為什么需要這樣做?
<table id='banana' border=1 cellpadding='5px' cellspacing='2px'>
<!-- content to follow -->
</table>
<script>
const nl=String.fromCharCode(10);
var id='banana';
var table = document.getElementById( id );
var row = table.insertRow(0);
var cell = row.insertCell(0);
cell.innerHTML = 'This is some basic text';
var p=document.createElement('p');
p.innerText='This is a Paragraph within the table cell';
cell.appendChild( p )
cell.addEventListener( 'click', function(e){
if( e.target != e.currentTarget ) alert( [ 'target: '+e.target, 'currentTarget: '+e.currentTarget, 'text: '+e.target.innerText ].join( nl ) )
});
</script>
繼之前關(guān)于在用戶選擇表格單元格中的文本時(shí)觸發(fā)事件的評論之后,您可以嘗試以下操作:
document.body.addEventListener('mouseup',(e)=>{
alert( 'Text has been selected? '+ window.getSelection() )
});
正如我剛剛發(fā)現(xiàn)的那樣,有一個(gè)selectionchange事件可能會引起人們的興趣 - MDN 提供的更多信息

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
將事件偵聽器添加到cell1.
cell1.addEventListener("click", function() {
console.log(this.innerText);
})

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
對 onClick 事件使用 onclick
cell1.onclick = function ()
{
console.log("onclick");
};
var table = document.getElementById("table");
var row = table.insertRow(0);
var cell1 = row.insertCell(0);
cell1.innerHTML = "some text"
cell1.onclick = function ()
{
console.log("onclick");
};
<table id="table">
</table>
添加回答
舉報(bào)