【发布时间】:2017-01-10 21:48:17
【问题描述】:
我实际上使用了一个脚本,它允许我在点击时显示一个 div 并隐藏其他人,但现在我需要用“class”而不是“id”来做同样的事情。
我当前的脚本:
function layout(divName){
var hiddenVal = document.getElementById("tempDivName");
if(hiddenVal.Value != undefined){
var oldDiv = document.getElementById(hiddenVal.Value);
oldDiv.style.display = 'none';
}
var tempDiv = document.getElementById(divName);
tempDiv.style.display = 'block';
hiddenVal.Value = document.getElementById(divName).getAttribute("class");}
我尝试使用 getElementsByClassName :
function layoutNEW(divName){
var hiddenVal = document.getElementById("tempDivName");
if(hiddenVal.Value != undefined){
var oldDiv = document.getElementById(hiddenVal.Value);
oldDiv.style.display = 'none';
}
var tempDiv = document.getElementsByClassName(divName);
for ( var i=0, len=tempDiv.length; i<len; ++i ){
tempDiv[i].style.display = 'block';
}
hiddenVal.Value = document.getElementById(divName).getAttribute("id");}
有什么想法吗?
编辑:我当前带有“id”的脚本的工作示例:JSFiddle
编辑 2: 效果很好,但是当 div(类)被克隆时,只有其中一个显示 div。你对此有什么想法吗?演示这种情况的 JSFiddle 在哪里:JSFiddle
【问题讨论】:
-
您是点击
div还是其他要隐藏/显示的元素?你能分享你的 html 以及 JavaScript 的其余部分吗? -
什么是
.Value?为什么它有一个大写V?为什么不直接找到被点击的元素(event.target)而不是隐藏其余元素? -
@epascarello 您不能在单击时隐藏其余元素,否则您将无法单击另一个元素。您将隐藏单击的元素并显示其余元素。
-
@mhodges 或任何 OP 正在做的事情...... OP 的代码毫无意义。
-
@epascarello 100% 同意。无需在隐藏元素中存储任何值,您可以使用 event.target 访问事件触发器,如您所述。
标签: javascript class toggle show-hide