私はjQueryを初めて使い、テーブルに必要な特定の機能を達成するのに少し苦労しています。
動的にソートされるデータベースリストがあり、列ヘッダーをクリックして特定の列のテキストを含むテキストエリアを作成できるようにしたいと考えています。私はこのhttp://jsfiddle.net/4BwGG/3/から使用したコードの機能のいくつかを持っていますが、ここに私が理解できないことがいくつかあります:
style="display: none"
タグ内のプロパティを使用してテーブルの行の一部を非表示にして<tr>
おり、スクリプトがすべてを解析すると、それらの非表示の行からの情報も含まれます。表示されている行だけがテキストエリアにコピーされるようにするにはどうすればよいですか?
1 行のエントリは次のようになります。
<tr filtermatch="false" style="display: none;">
<td>< a href="http://example.edu">Tommy Trojan< /a>< /td>
< td>123-555-1231< /td>
< td>Statue Man< /td>
< td>[LTS1] [LTS2] [PM] [PM2] [TA1] [TA2] < /td>
< td>tommy@example.edu< /td>
< /tr>`
関数は次のとおりです。
function SelectColumn(index, tableId) {
var columnText = 'You selected:\n\n';
var columnSelector = '#' + tableId + ' tbody > tr > td:nth-child(' + (index + 1) + ')';
var cells = $(columnSelector);
// clear existing selections
if (window.getSelection) { // all browsers, except IE before version 9
window.getSelection().removeAllRanges();
}
if (document.createRange) {
cells.each(function(i, cell) {
var rangeObj = document.createRange();
rangeObj.selectNodeContents(cell);
window.getSelection().addRange(rangeObj);
columnText = columnText + '\n' + rangeObj.toString();
});
}
else { // Internet Explorer before version 9
cells.each(function(i, cell) {
var rangeObj = document.body.createTextRange();
rangeObj.moveToElementText(cell);
rangeObj.select();
columnText = columnText + '\n' + rangeObj.toString();
});
}
alert(columnText);
}