选择HTML表中除一列以外的所有列

选择HTML表中除一列以外的所有列,html,html-table,append,export-to-excel,getselection,Html,Html Table,Append,Export To Excel,Getselection,我使用以下命令在应用程序中选择一个表元素,以便用户将表拖放到Excel中: $('#footer').on("click", "#exportSel", function () { var el = document.getElementById(curTable); var body = document.body, range, sel; if (document.createRange && window.getSelection) {

我使用以下命令在应用程序中选择一个表元素,以便用户将表拖放到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>
您可以使用jQuery中的函数

$('myElements').not('myExcludedElements');
更新:

由于某种原因,JSFIDLE不会为我加载,所以这里它是在CodePen中


我决定用另一种方式来做这件事

我不会从选择中删除图像列,而是在进行选择时将图像转换为URL字符串:

range.selectNode(cells[i]);
sel.addRange(range);
`

`

这样,如果事实上有人需要,URL仍然存在于图像中

唯一的问题是在清除选择后尝试恢复图像。我尝试添加.on函数,但它不想正常工作:

`

`


我可以在不恢复的情况下处理它,但显然我更愿意这样做。

如果您能给我一个html示例,我很乐意提供一个更具体的示例。chockleyc-感谢您的回复。我提供了上表的一个例子。我用一个例子更新了我的答案。我为我在工作中通常只检查SO的延迟表示歉意。看来我必须对我的选择功能进行一些更改才能实现这一点。我看到了如何轻松获得不是“.nosel”的td,但是我使用的选择函数选择了表元素,而不是td元素。我仍然无法将选择从一个td添加到另一个td。谢谢你提供的信息。不过,不要!
$('body').on('click', function () {
    if ($("#" + curTable + " img:hidden").length > 0) {
        var imgs = $('#' + curTable + " img:hidden");
        for (i = 0; i < imgs.length; i++) {
            $(imgs[i]).parent().text() = '';
            imgs[i].show();
        }
    }
});