我需要使用鼠标指针从HTML表格中选择单个列的文本。
例如,请考虑下表。
在此表中,我无法单独选择姓氏列的文本。相反,在拖动鼠标时也会选择其余的表格内容。
最终目的是分别选择每一列。是否有办法在表格中选择单列文本?
尝试-moz-user-select
的所有不同选项,但没有任何结果。
答案 0 :(得分:7)
如果要选择列,则必须在HTML中提供该结构。这将涉及在表中使用表,如下所示: http://codepen.io/DavidvanDriessche/pen/jqbeqK
基本方法是使一个外表具有单行。此行包含所需数量的列(td)元素(虽然示例显示了三个,但可以轻松地将其调整为您想要/需要的任意数量的列。
这些td元素包含自己的表,只有行(每行都有一列)。现在可以单独选择列。
<table><tr>
<td>
<table>
<tr><th>First name</th></tr>
<tr><td>David</td></tr>
<tr><td>Frank</td></tr>
<tr><td>Bob</td></tr>
</table>
</td>
<td>
<table>
<tr><th>Last name</th></tr>
<tr><td>David</td></tr>
<tr><td>Frank</td></tr>
<tr><td>Bob</td></tr>
</table>
</td>
<td>
<table>
<tr><th>Third name</th></tr>
<tr><td>David</td></tr>
<tr><td>Frank</td></tr>
<tr><td>Bob</td></tr>
</table>
</td>
</tr></table>
答案 1 :(得分:1)
在您的姓氏中添加一个类并添加此css属性。
以下是jsfiddle的另一种方式。
table, th, td {
border: 1px solid black;
}
.unselectable {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select:none;
user-select: none;
}
.selectable {
-webkit-touch-callout: all;
-webkit-user-select: all;
-khtml-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
-o-user-select:all;
user-select: all;
}
<html>
<head>
</head>
<body>
<h2>Add some css to lastname</h2>
<table>
<tr>
<th class="unselectable">Firstname</th>
<th class="selectable">Lastname</th>
</tr>
<tr>
<td class="unselectable">Peter</td>
<td class="selectable">Griffin</td>
</tr>
<tr>
<td class="unselectable">Lois</td>
<td class="selectable">Griffin</td>
</tr>
</table>
</body>
</html>
答案 2 :(得分:1)
我也需要具有可选的HTML列。 @DavidvanDriessche的回答使我走上了正确的道路,但像@ Naja2Raja一样,我需要一个动态列解决方案。我相信以下PHP代码可以带您进入动态(未知)列计数解决方案。
<?php
$con=mysqli_connect("localhost","","","test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="SELECT fName,email FROM Persons ORDER BY fname";
if ($result=mysqli_query($con,$sql))
{
// Start an HTML table for each field
$table0 = "<table id=\"table0\" name=\"table0\">
<tr><th>Last Name</th></tr>
";
$table1 = "<table id=\"table1\" name=\"table1\">
<tr><th>Age</th></tr>
";
// Fetch one and one row
while ($row=mysqli_fetch_row($result))
{
$table0 .= "<tr><td>". $row[0] ."</td></tr>\n";
$table1 .= "<tr><td>". $row[1] ."</td></tr>\n";
}
// Free result set
mysqli_free_result($result);
// Close HTML table
$table0 .= "</table>";
$table1 .= "</table>";
// Place HTML Column Tables into Single Row HTML table with a <td>
// column for each HTML Column Table
echo "<table><tr>
<td>
$table0
</td>
<td>
$table1
<td>
</tr></table>";
}
mysqli_close($con);
?>
答案 3 :(得分:0)
出于对齐目的,您还可以在表格中使用表格
仅限原理图:
OuterTable(
td(leftColumnTable)/td
td(midColumnTable)/td
td(rightColumnTable)/td
)
/OuterTable
这将允许突出显示各列以及完整的表格。
答案 4 :(得分:0)
<style>
table {
border-spacing: 0;
border-collapse: collapse;
overflow: hidden;
z-index: 1;
}
td, th, .ff-fix {
cursor: pointer;
padding: 10px;
position: relative;
}
td:hover::after,
.ff-fix:hover::after {
background-color: #ffa;
content: '\00a0';
height: 10000px;
left: 0;
position: absolute;
top: -5000px;
width: 100%;
z-index: -1;
}
</style>
<script>
function tablefunhover() {
var tds = document.getElementsByTagName( 'td' );
for( var index = 0; index < tds.length; index++ ) {
tds[index].innerHTML = '<div class="ff-fix">' + tds[index].innerHTML + '</div>';
};
var style = '<style>'
+ 'td { padding: 0 !important; }'
+ 'td:hover::before, td:hover::after { background-color: transparent !important; }'
+ '</style>';
document.head.insertAdjacentHTML( 'beforeEnd', style );
};
tablefunhover();
</script>
<table>
<tr>
<th>Firstname</th><th>Lastname</th><th>Email</th>
</tr>
<tr>
<td>xyz</td><td>xyz</td><td>xyz</td>
</tr>
<tr>
<td>xyz</td><td>xyz</td><td>xyz</td>
</tr>
<tr>
<td>xyz</td><td>xyz</td><td>xyz</td>
</tr>
<tr>
<td>xyz</td><td>xyz</td><td>xyz</td>
</tr>
</table>
答案 5 :(得分:0)
这个问题很老,但我并不喜欢其他答案。它们似乎比必要的更复杂。我只是分配了课程。
<table>
<tr>
<th class="column1">Firstname</th>
<th class="column2">Lastname</th>
</tr>
<tr>
<td class="column1">Greg</td>
<td class="column2">Smith</td>
</tr>
<tr>
<td class="column1">Sam</td>
<td class="column2">Flinstone</td>
</tr>
</table>
&#13;
{{1}}&#13;
答案 6 :(得分:-1)
获取第二列。
table th:nth-child(2), table td:nth-child(2){
background: red;
}
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>surname</th>
</tr>
<tr>
<td >Fred</td>
<td>frankin</td>
<td>mike</td>
</tr>
<tr>
<td >Mike</td>
<td>frankin</td>
<td>jones</td>
</tr>
</table>
有边框编辑
th, td{
padding: .2em .5em;
}
table { border: none; border-collapse: collapse; }
table th:nth-child(2), table td:nth-child(2) { border-left: 3px solid brown; }
table th:nth-child(2), table td:nth-child(2) { border-right: 3px solid brown; }
table th:nth-child(2) { border-top: 3px solid brown; }
table tr:nth-of-type(3) td:nth-of-type(2){border-bottom: 3px solid brown;}
table td:first-child { border-left: none; }
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>surname</th>
<th>Another</th>
</tr>
<tr>
<td >Greg</td>
<td>Fred</td>
<td>mike</td>
<td>Another</td>
</tr>
<tr>
<td >Sam</td>
<td>Flinstone</td>
<td>jones</td>
<td>Another</td>
</tr>
</table>