【发布时间】:2015-12-23 20:25:23
【问题描述】:
我有 3 个单选按钮,它们分别称为“简单”、“中”和“难”。每个都链接到一个单独的 Javascript 函数。这些函数显示一个 div,同时隐藏另外两个 div。
这样做的目的是让用户能够选择一个选项并查看该选项的 div,例如,如果他们按下“Easy”单选按钮,则应显示“Easy”div,并且应该隐藏“中”和“硬”div。
我已经尝试让这个工作一周了,我想我已经尝试了关于 stackoverflow 的所有相关建议,但我希望我缺少一些小东西。
这些是我的 HTML 中的单选按钮:
<td width="100"><div align="center" class="radio">
<input type="radio" name='thing' value='valuable' id="easy" onclick="showEasy()"/></div>
</td>
<td width="100"><div align="center" class="radio">
<input type="radio" name='thing' value='valuable' id="medium" onclick="showMedium()"/></div>
</td>
<td width="100"><div align="center" class="radio">
<input type="radio" name='thing' value='valuable' id="hard" onclick="showHard()"/></div>
</td>
这些是我想要显示/隐藏的 DIV:
<td colspan="8" rowspan="12" align="center">
<div align="center" id="easyDIV"><img src="/images/pic1.jpg" alt="If you can see this, then the image didn't load properly." class="distort1" id="sample"/></div>
<div align="center" id="mediumDIV"><img src="/images/pic2.jpg" alt="If you can see this, then the image didn't load properly." class="distort2" id="sample1"/></div>
<div align="center" id="hardDIV"><img src="/images/pic3.jpg" alt="If you can see this, then the image didn't load properly." class="distort3" id="sample2"/></div>
</td>
这是我页面顶部的脚本,每个函数一次应该显示一个 DIV:
<script>
function showEasy()
{
$("#easyDIV").removeClass("displaynone");
//Make sure mediumDIV is not visible
$("#mediumDIV").addClass("displaynone");
//Make sure hardDIV is not visible
$("#hardDIV").addClass("displaynone");
}
function showMedium()
{
$("#mediumDIV").removeClass("displaynone");
//Make sure easyDIV is not visible
$("#easyDIV").addClass("displaynone");
//Make sure hardDIV is not visible
$("#hardDIV").addClass("displaynone");
}
function showHard()
{
$("#hardDIV").removeClass("displaynone");
//Make sure easyDIV is not visible
$("#easyDIV").addClass("displaynone");
//Make sure mediumDIV is not visible
$("#mediumDIV").addClass("displaynone");
}
</script>
我只希望在开始时显示 Medium div,因此我将 showMedium(); 设置为在页面完成加载后运行,这成功隐藏了 Easy 和 Hard div。问题是所有 3 个 div 都可见一两秒,直到每个页面元素完成加载。加载完所有内容后,showMedium(); 运行,Easy 和 Hard div 被隐藏。
这对用户来说看起来真的很糟糕,所以我一直在尝试找到一种方法来默认隐藏这两个 div,只在开始时显示 Medium div。
我尝试了几种方法,我尝试通过将它们的 div 设置为 <div hidden> 来隐藏两个 div
我还尝试通过将它们的样式设置为 display:none 来隐藏两个 div,如下所示:
<div align="center" id="easyDIV" style="display: none;"><img src="" alt="If you can see this, then the image didn't load properly." id="sample"/></div>
然后为了显示每个 div,我尝试通过在上面的 Javascript 函数中包含代码来将这种样式更改为 display: inline 和 display: block。
这些尝试没有奏效,2 个 div 被成功隐藏(因为它们在页面加载时没有出现)但是每当我尝试点击 Easy 或 Hard 单选按钮时,Medium div 正确消失,它被一个空白空间取代,这意味着 Easy 和 Hard div 仍然隐藏。
我不知道如何让它工作,似乎我可以让单选按钮成功工作并显示/隐藏正确的 div 的唯一方法是让所有 3 个加载/出现在屏幕上一秒钟或两个页面加载时。我真的很感激任何关于让它按照我想要的方式工作的建议。我会尝试任何建议,并提前感谢您的帮助!
【问题讨论】:
-
您需要知道 'align' 属性在 10 年或更长时间前已被弃用。使用 CSS。
标签: javascript jquery html css hidden