“更改功能”文档.getElementById " to "文档.getElementsByClassName”,添加淡
Change function “document.getElementById” to “document.getElementsByClassName” & add fade in/out - JavaScript
我对JavaScript的了解非常有限,我希望有人能帮助我!
我有下面的代码,我试图使代码工作与类,而不是id,还添加了淡入/淡出效果在这些函数。我已经添加了一个类和id集,试图使它尽可能清楚我要做什么。
<!DOCTYPE html>
<html>
<head>
<style>
.sub1, .sub2 {
float: right;
background-color: blue;
width: 250px;
height: 250px;
display: none;
}
#sub1, #sub2 {
float: right;
background-color: red;
width: 250px;
height: 250px;
display: none;
}
</style>
<script language="javascript" type="text/javascript">
// class
function SetTabsHidden(tabToHide)
{
document.getElementsByClassName('.sub1').style.display = "none";
document.getElementsByClassName('.sub2').style.display = "none";
}
function SetTabsVisible(tabToShow)
{
document.getElementsByClassName('.sub1').style.display = "none";
document.getElementsByClassName('.sub2').style.display = "none";
document.getElementsByClassName(tabToShow).style.display = "block";
}
// id
function SetTabsHidden(tabToHide)
{
document.getElementById('sub1').style.display = "none";
document.getElementById('sub2').style.display = "none";
$(tabToHide).fadeOut("slow");
}
function SetTabsVisible(tabToShow)
{
elements = document.getElementById('sub1').style.display = "none";
elements = document.getElementById('sub2').style.display = "none";
elements = document.getElementById(tabToShow).style.display = "block";
$(tabToShow).fadeIn("slow");
}
</script>
</head>
<body>
<div id="main">
<input type=button name=type value='class1' onclick="SetTabsVisible('.sub1');";>
<input type=button name=type value='class2' onclick="SetTabsVisible('.sub2');";>
<input type=button name=type value='id1' onclick="SetTabsVisible('sub1');";>
<input type=button name=type value='id2' onclick="SetTabsVisible('sub2');";>
<input type=button name=type value='Hide' onclick="SetTabsHidden();";>
<div class="sub1" id="sub1"></div>
<div class="sub2" id="sub2"></div>
</body>
</html>
您的getElementsByClassName
将无法工作,因为您不想在类名之前包含句号(您会注意到byID不包括#)。同样的道理)只要把它改成sub1或sub2或其他的,它就会开始工作了。
你定义了四个函数,但是它们有相同的名字,这是行不通的
您必须将它们命名为不同的名称,例如"SetTabsVisibleByClass"....或者你可以只使用两个函数,但传递另一个参数,让它知道它是你想要使用的类还是id。
您的示例代码使用jQuery进行衰落。如果您计划使用jQuery,则不需要所有这些额外的逻辑。它可以为你处理:
$(".sub1, .sub2").hide()
或者,如果它们都包含在一起,你可以这样做:
$(tabToShow).siblings().hide()
这样你就不用记住所有不同的类名了
如果你不打算使用jQuery,那么你也可以使用CSS过渡。比如:
.sub1, .sub2, .sub3 {
opacity: 0;
}
.sub1.active, .sub2.active, .sub3.active {
opacity: 1;
-webkit-transition: opacity 1s linear;
-moz-transition: opacity 1s linear;
-ms-transition: opacity 1s linear;
-o-transition: opacity 1s linear;
transition: opacity 1s linear;
}
annnd
document.getElementById(tabToShow).setAttribute("class", "active")
当然,这种方法意味着不使用display: none
,这可能对您很重要。在这种情况下,您可能需要为transitionEnd
添加事件侦听器,以便知道何时添加display: none。
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 文档.编写方法问题