用Javascript隐藏和显示HTML元素是行不通的
Hiding and Showing HTML Elements with Javascript doesn't work
我试图通过使用javascript隐藏和显示HTML元素。这一切都很好,但结果不再是1秒后可用。一秒钟后,默认显示的元素出现,而应该显示的元素被隐藏。
下面我张贴了我的示例代码。我创建了一个名为selected的元素,它保留了一个值,告诉我们实际显示的是哪个段落。如果我点击下一步,我想要显示下一个段落。
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<selected id="displayedResults" value="0">
</selected>
<div>
<p id="results_0" style=""> Result 0 </p>
<p id="results_1" style="display: none;"> Result 1 </p>
<p id="results_2" style="display: none;"> Result 2 </p>
<p id="results_3" style="display: none;"> Result 3 </p>
<p id="results_4" style="display: none;"> Result 4 </p>
<p id="results_5" style="display: none;"> Result 5 </p>
<a onclick="previousResults()" href="">Previous</a>
<a onclick="nextResults()" href="">Next</a>
</div>
<script type="text/javascript">
function previousResults()
{
var index = document.getElementById("displayedResults").getAttribute("value");
var rslString = "results_";
if(index>0)
{
document.getElementById(rslString.concat(index)).style.display='none';
index=index-1;
document.getElementById(rslString.concat(index)).style.display='block';
document.getElementById("displayedResults").setAttribute("value",index);
}
}
</script>
<script type="text/javascript">
function nextResults()
{
var index = document.getElementById("displayedResults").getAttribute("value");
var rslString = "results_";
if(index<5)
{
document.getElementById(rslString.concat(index)).style.display='none';
index++;
document.getElementById(rslString.concat(index)).style.display='block';
document.getElementById("displayedResults").setAttribute("value",index);
}
}
</script>
</body>
</html>
当您点击链接时,链接正在重新加载页面,因此您可以看到JavaScript的结果,然后页面重新加载并重置回起始状态。最简单的解决方案是将<a>
元素的HTML修改为:
<a onclick="previousResults(); return false;" href="">Previous</a>
<a onclick="nextResults(); return false;" href="">Next</a>
return false
将阻止该操作的默认行为-在本例中是在链接之后-从而防止页面重新加载。
除此之外,HTML中没有<selected>
元素。使用隐藏输入会更好,所以替换为:
<selected id="displayedResults" value="0">
</selected>
<input type="hidden" id="displayedResults" value="0"/>
<selected id="displayedResults" value="0"></selected>
这是行不通的;-)-编辑:好的,是的,它可以工作,但它不是有效的HTML…
<select id="displayedResults">
<option value="0">zero</option>
</select>
这是因为你的页面在每次点击中都在重新加载。把锚标签改成另一个标签,比如span之类的
<span onclick="previousResults()">Previous</span>
<span onclick="nextResults()">Next</span>
add
return false;
每个函数
使用jquery而不是传统的javascript
隐藏结果1$('#results_1').hide();
要取消隐藏,只需使用$('#results_1').show();
请告诉我你想达到什么目标。我觉得你做得太复杂了。
一旦点击上一个和下一个链接,页面就会重新加载。因此,请按以下步骤执行:
<a onclick="previousResults()" href="javascript:">Previous</a>
<a onclick="nextResults()" href="javascript:">Next</a>
在onclick
属性中添加return false;
,以防止浏览器刷新页面。
见http://jsfiddle.net/xZSyz/
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 在JOINTJS元素中使用html是行不通的
- 用Javascript隐藏和显示HTML元素是行不通的
- 在FireFox中,将另一个元素集中在blur上是行不通的