javascript 带有 select 长 运行 脚本的动态内容
javascript dynamic content with select long running script
基本上一直在尝试弄清楚一些 javascript 的东西,所以做了几个 div 和一个 select,所以取决于 selected选项,取决于 div 是什么 shown/hidden。
它似乎工作正常,加载后隐藏除了第一个 div 之外的所有内容,然后当第二个选项被 selected 时,它显示第二个 div,隐藏第一个通过附加 class.
不过,当我将选项改回第一个 div 时,它会创建一个很长的 运行 脚本,使所有内容都卡住,我无法弄清楚那个很长的 运行 在哪里脚本来自.
感谢任何建议。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.itemCont.show{
display:block;
}
.itemCont.hide{
display:none;
}
</style>
</head>
<body onload="sortDivs();">
<select name="options" id="opts" onchange="optSelect(this);">
<option value="0">item</option>
<option value="1">another</option>
</select>
<div class="output">
<div class="itemCont show" id="div0">
<h1>1</h1>
</div>
<div class="itemCont" id="div1">
<h1>2</h1>
</div>
</div>
</body>
<script async="async" ype="text/javascript">
function sortDivs(){
var divs = document.getElementsByClassName('itemCont');
for( var i = 0; i < divs.length; i++ ){
if(i>0){
divs[i].className += ' hide';
}
}
}
function optSelect(opt){
var val = opt.value;
var divs = document.getElementsByClassName('itemCont');
var divActive = document.getElementsByClassName("itemCont show");
divActive[0].className = divActive[0].className.replace(/\bshow\b/,'hide');
for ( var i = 0; i < divs.length; i++ ) {
if(i = val){
divs[i].className = divs[i].className.replace(/\bhide\b/,'show');
}
}
}
</script>
</html>
你打错了 =
应该是 ==
for ( var i = 0; i < divs.length; i++ ) {
if(i == val){
divs[i].className = divs[i].className.replace(/\bhide\b/,'show');
}
}
不过,我建议使用 jQuery(切换)来处理此类问题:)
基本上一直在尝试弄清楚一些 javascript 的东西,所以做了几个 div 和一个 select,所以取决于 selected选项,取决于 div 是什么 shown/hidden。
它似乎工作正常,加载后隐藏除了第一个 div 之外的所有内容,然后当第二个选项被 selected 时,它显示第二个 div,隐藏第一个通过附加 class.
不过,当我将选项改回第一个 div 时,它会创建一个很长的 运行 脚本,使所有内容都卡住,我无法弄清楚那个很长的 运行 在哪里脚本来自.
感谢任何建议。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.itemCont.show{
display:block;
}
.itemCont.hide{
display:none;
}
</style>
</head>
<body onload="sortDivs();">
<select name="options" id="opts" onchange="optSelect(this);">
<option value="0">item</option>
<option value="1">another</option>
</select>
<div class="output">
<div class="itemCont show" id="div0">
<h1>1</h1>
</div>
<div class="itemCont" id="div1">
<h1>2</h1>
</div>
</div>
</body>
<script async="async" ype="text/javascript">
function sortDivs(){
var divs = document.getElementsByClassName('itemCont');
for( var i = 0; i < divs.length; i++ ){
if(i>0){
divs[i].className += ' hide';
}
}
}
function optSelect(opt){
var val = opt.value;
var divs = document.getElementsByClassName('itemCont');
var divActive = document.getElementsByClassName("itemCont show");
divActive[0].className = divActive[0].className.replace(/\bshow\b/,'hide');
for ( var i = 0; i < divs.length; i++ ) {
if(i = val){
divs[i].className = divs[i].className.replace(/\bhide\b/,'show');
}
}
}
</script>
</html>
你打错了 =
应该是 ==
for ( var i = 0; i < divs.length; i++ ) {
if(i == val){
divs[i].className = divs[i].className.replace(/\bhide\b/,'show');
}
}
不过,我建议使用 jQuery(切换)来处理此类问题:)