嘿家伙们无法弄清楚如何制作它以便我可以让它一次打开一张桌子,一旦你打开另一张桌子,另一张桌子应该关闭任何帮助吗?
function showRow(cctab){
if (document.getElementById(cctab)) {
document.getElementById(cctab).style.display = '';
}
}
function hideRow(row1){
if (document.getElementById(cctab)) {
document.getElementById(cctab).style.display = 'none';
}
}
function toggleRow(cctab){
if (document.getElementById(cctab)) {
if (document.getElementById(cctab).style.display == 'none') {
showRow(cctab)
} else {
hideRow(cctab)
}
}
}
现在我想让它在我建议onClick =“javascript:toggleRow(cctab);”之后只打开一个表“cctab” anyhelp?
答案 0 :(得分:0)
你可以保存对之前显示的项目的引用,并在显示另一项时隐藏它:
var currentTab;
function showRow(cctab){
if (document.getElementById(cctab))
document.getElementById(cctab).style.display = '';
if (currentTab && currentTab != cctab)
hideRow(currentTab);
currentTab = cctab;
}
请注意,执行内联事件处理程序属性是所以 1999,但假设您因任何原因坚持使用它,而javascript:
中不需要onClick="javascript:toggleRow(cctab);"
。 (只需说onClick="toggleRow(cctab);"
)
答案 1 :(得分:0)
首先,您需要将旧行存储在某处。
您所拥有的是一个系统,您使用<element onclick="...">
将当前元素的id传递给显示或隐藏该行的控制器。
但是如果你看一下,你所缺少的是一种告诉最后一行是什么的方法。 所以你的代码需要的是一个中心对象,或者存储旧元素和新元素的变量。
你是如何做到这一点取决于你,但如果你做了这样的事情:
var table_rows = { current : null /* or set a default */, previous : null };
function rowController (cctab) {
var newRow = document.getElementById(cctab);
if (newRow === table_rows.current) { toggleRow(newRow); }
else {
table_rows.previous = table_rows.current;
table_rows.current = newRow;
showRow(table_rows.current);
hideRow(table_rows.previous);
}
}
注意:
这直接处理元素,因此您不必在函数中执行getById; 处理了一次,然后传递该元素并进行保存和检查。
它假设点击发生在行本身,而不是行内的任何内容;
这是您的代码所具有的独立问题
除非明确且容易地点击行,而不是行内的单元格,否则很难说出您希望用户如何打开和关闭行。
我的意思是,如果只有表格行有onclick,并且有人点击了表格列,那么onclick就不会触发。