JSFiddle - React, Tailwind, and code Playground
HTML
<table id="codexpl">
<tr>
<th>#</th>
<th>Columna</th>
<th>Relative</th>
<th>Isso</th>
</tr>
<tr>
<td id="0_0" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)"><select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select></td>
<td id="0_1" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
<td id="0_2" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
<td id="0_3" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
</tr>
<tr>
<td id="1_1" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
<td id="1_2" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
<td id="1_3" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
<td id="1_4" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
</tr>
<tr>
<td id="2_1" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
<td id="2_2" onselectstart="onSelectStart(event);" onmousedown="onMouseDown(event)" onmouseover="onMouseOver(event)" onmouseup="onMouseUp(event)">Test</td>
...
CSS
.selected{
background-color: yellow;
}
JavaScript
var isMouseDown = false;
function onMouseDown(e) {
isMouseDown = true;
var cell = e.currentTarget;
$('#codexpl').find(cell).addClass("selected");
//e.preventDefault(); //to call only if user is selecting a range
return false; // prevent text selection
};
function onSelectStart(e){
e.preventDefault();
return false;
};
function onMouseOver(e){
if (!isMouseDown) return;
var cell = e.currentTarget;
$('#codexpl').find(cell).addClass("selected");
e.preventDefault();
return false;
}
function onMouseUp(e){
isMouseDown = false;
}