【发布时间】:2011-02-05 21:39:37
【问题描述】:
在下面的代码中,如果Control(触发Toggle的第一个OL的元素)不是Visible,则应该设置Visible和所有其他Controls(Controls[i])所以是Hidden。
.js
function Toggle(Control){
var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
var Control=Control.getElementsByTagName("ol")[0];
if(Control.style.visibility!="visible"){
for(var i=0;i<Controls.length;i++){
if(Controls[i]!=Control){
Reveal("hide",20,0.3,Controls[i]);
}else{
Reveal("show",20,0.3,Control);
};
};
}else{
Reveal("hide",20,0.3,Control);
};
};
虽然函数 [Toggle] 工作正常,但它实际上将 Controls[i] 设置为 Hidden,即使它已经设置了。
这很容易通过添加If 语句来纠正,如下面的代码,肯定有更优雅的解决方案,也许是复杂的If 条件?
.js
function Toggle(Control){
var Controls=document.getElementsByTagName("ol",document.getElementById("Quote_App"));
var Control=Control.getElementsByTagName("ol")[0];
if(Control.style.visibility!="visible"){
for(var i=0;i<Controls.length;i++){
if(Controls[i]!=Control){
if(Controls[i].style.visibility=="visible"){
Reveal("hide",20,0.3,Controls[i]);
};
}else{
Reveal("show",20,0.3,Control);
};
};
}else{
Reveal("hide",20,0.3,Control);
};
};
我们永远感谢您的帮助。
【问题讨论】:
-
第 3 行的错误? Control.getElementsByTagName("ol")[0];应该是 Controls.getElementsByTagName("ol")[0]; ?
-
没有错误。 Toggle 的参数 Control 是触发 Toggle 的元素。变量 Control 是自变量 Control 的第一个子 OL(自变量 Control 的选项)。