我正在使用以下内容在我的应用程序中选择一个表格元素,以便用户将表格拖放到 Excel 中:
$('#footer').on("click", "#exportSel", function () {
var el = document.getElementById(curTable);
var body = document.body, range, sel;
if (document.createRange && window.getSelection) {
range = document.createRange();
var sel = window.getSelection ? window.getSelection() : document.selection;
if (sel) {
if (sel.removeAllRanges) {
sel.removeAllRanges();
} else if (sel.empty) {
sel.empty();
}
}
try {
range.selectNodeContents(el);
sel.addRange(range);
} catch (e) {
range.selectNode(el);
sel.addRange(range);
}
} else if (body.createTextRange) {
range = body.createTextRange();
range.moveToElementText(el);
range.select();
}
});
...一切正常。除了我的一个表在一列中有图像,我想从选择中删除这一列(或该列中的 td)。
我将“图片”td 添加到“nosel”类中,并且能够将表中不在该类中的所有 td 放入变量中:
cells = $("#" + curTable + " tr td:not(.nosel)");
然后我省略了删除或清空当前选择的代码,并尝试将每个单元格添加到选择中:
range.selectNode(cells[i]);
sel.addRange(range);
...但只有第一个 td 被选中。
所以两个问题:
这甚至可能吗?
有没有比 addRange 更好的方法?我尝试了扩展,但没有奏效。
根据要求,这是我的表的示例:
<table class="sortable" id="resultsTable" border="1">
<thead id="resultsHeader">
<th>OID</th>
<th>Image</th>
<th>Address</th>
<th>Parcel ID</th>
</thead>
<tbody id="resultsBody" data-ssimplename="results">
<tr>
<td>1</td>
<td align="center" class="nosel"><img style="width: 125px;" src="http://www.vanderburghassessor.org/assessor_images/12/180/34/213/020/12-180-34-213-020-S.jpg"></td>
<td align="center">5830 N KERTH AVE</td>
<td align="center">82-06-04-034-213.020-020</td>
</tr>
</tbody>
</table>