我正在尝试设置一个表格,其中最初所有单元格都是空的,但是如果用户单击空单元格,则文本将出现在单元格中。这可能只使用html吗?
4 回答
使用 HTML 和 CSS,您可以近似这种行为,但只能在鼠标按下时进行。
我不确定这是否适用于所有浏览器:
<table>
<tr>
<td>Click the cell:</td>
<td class="revealer ">
<div class="revealable">
MAGIC!!
</div>
</td>
</tr>
</table>
神奇的是(滥用?)active
伪选择器:
td.revealer .revealable {
display:none;
}
td.revealer:active .revealable {
display:block;
}
只要鼠标按下,效果就会持续。鼠标向上时,元素不再“活动”
试试看:http: //jsfiddle.net/GRMule/awksn/
综上所述……这个用例非常狭窄。通常,如果您要在页面上执行任何类型的动态操作,您应该考虑添加一些微不足道的 javascript。不过,不要被那些神奇的库(jQuery、mootools、下划线等)所吸引——如果你所做的只是一些非常简单的事情,你不应该添加 jQuery(例如)来完成这个. 用普通的 javascript 做这样的小事情并不比用一些花哨的库难,但库添加了 10,000 行你不需要的代码。
这是一个仅使用HTML 和一些 CSS 的解决方案:
主页:
<html>
<body>
<table border=1>
<tr><td><iframe src="page1.html"></iframe></td><td><iframe src="page1.html"></iframe></td></tr>
<tr><td><iframe src="page1.html"></iframe></td><td><iframe src="page1.html"></iframe></td></tr>
</table>
</body>
</html>
page1.html:
<html>
<body>
<form method=post action="page2.html">
<input type="submit" value="" style="width: 100%; height: 100%; margin: 0px; padding: 0px; background: white; border: none;">
</form>
</body>
</html>
page2.html:
<html>
<body>
Hello!
</body>
</html>
工作原理:
主页显示一个表格。每个单元格包含一个内联框架。
内联框架的内容是一个包含提交按钮的表单。提交按钮没有文本,使用 CSS 设置样式:白色背景、无边框、无边距、无内边距、100% 宽度、100% 高度。这样它是不可见的,并使用整个表格单元格。
当您单击表格单元格时,实际上是单击了提交按钮。表单提交并显示page2.html(因为表单显示“action=page2.html”)
<td onclick="this.innerText = 'hello, world'"></td>
请记住,点击值实际上是 javascript,而不是纯粹的 html。
不它不是。不过,您可以使用 JavaScript 来做到这一点。
<table>
<tr>
<td onclick="this.innerHTML = 'Data';"></td>
<td onclick="this.innerHTML = 'Data';"></td>
<td onclick="this.innerHTML = 'Data';"></td>
</tr>
<tr>
<td onclick="this.innerHTML = 'Data';"></td>
<td onclick="this.innerHTML = 'Data';"></td>
<td onclick="this.innerHTML = 'Data';"></td>
</tr>
</table>
但是,如果您使用 jQuery 执行此操作会更好,因此您不必将其应用于每个单元格。您可以在 jQuery.com 下载 jQuery 并将其嵌入到您的页面中,如下所示:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('td').click(function(){
$(this).html('Data');
});
});
</script>
</head>
<body>
<table>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>