使用按钮按ID顺序显示和隐藏div标签

时间:2016-06-14 17:51:02

标签: javascript html tags

我做了一个小问卷,我把每个问题放在一个div标签中。我尝试按顺序显示div标签,因此当用户点击" Next"按钮它将移动到下一个div并隐藏前一个div。有点像寻呼系统?我想创建一些for循环,但我觉得我的代码非常混乱。有什么建议?提前致谢。

<form>
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
<div id="5"></div>
<div id="6"></div>
<div id="7"></div>
<div id="8"></div>
<div id="9"></div>
<div id="10"></div>



 <button type="button">Next</button> 
 <button type="button">Back</button> 
</form>

<script>
visible(){
document.getElementById('1').style.display = "block";
document.getElementById('2').style.display = "none";
document.getElementById('3').style.display = "none";
document.getElementById('4').style.display = "none";
document.getElementById('5').style.display = "none";
document.getElementById('6').style.display = "none";
document.getElementById('7').style.display = "none";
document.getElementById('8').style.display = "none";
document.getElementById('9').style.display = "none";
document.getElementById('10').style.display = "none";
}

5 个答案:

答案 0 :(得分:1)

您可以使用javascript函数来设置您的div。这也使用jQuery进行平滑过渡。

<div id="1">Question 1</div>
<div id="2" class="hidden">Question 2</div>
<div id="3" class="hidden">Question 3</div>
<div id="4" class="hidden">Question 4</div>
<div id="5" class="hidden">Question 5</div>
<div id="6" class="hidden">Question 6</div>
<div id="7" class="hidden">Question 7</div>
<div id="8" class="hidden">Question 8</div>
<div id="9" class="hidden">Question 9</div>
<div id="10" class="hidden">Question 10</div>


<button type="button" onclick="reverseDiv();">Back</button>
<button type="button" onclick="advanceDiv();">Next</button> 

<script>
var divNum=1;

advanceDiv = function() {
    if(divNum < 10) {
        divNum++;
        $('#' + (divNum-1)).slideToggle();
        $('#' + divNum).slideToggle();
    }
    else {
        /* last slide reached */
    alert('last question');
    }
}

reverseDiv = function() {
  if(divNum > 1) {
        divNum--;
        $('#' + (divNum+1)).slideToggle();
        $('#' + divNum).slideToggle();
    }
  else {
    alert('first question');
  }
}
</script>

这是一个显示功能的jsfiddle(还包括在函数之间移动的箭头键):https://jsfiddle.net/79xupebb/1/

答案 1 :(得分:1)

在这种情况下考虑开始结束非常重要。

如果您在最后然后单击下一个按钮会发生什么?然后你必须开始。如果您在起点并单击上一个按钮,则必须结束:

if(current === start && direction === "prev") current = end;
if(current === end && direction === "next") current = start;

要使所有div display: none和只有第一个display: block使用 CSS ,例如:

#container div {
    display: none;
}

#container div:first-child {
    display: block;
}

HTML

<div id="container">
    <div id="1">div1</div>
    <div id="2">div2</div>
    <div id="3">div3</div>
    ...
</div>

全部使用普通JavaScript

&#13;
&#13;
var prev = document.getElementById("prev");
var next = document.getElementById("next");

var start = 1;
var end = 10;

var current = 1;

function slide(direction, start, end) {
	document.getElementById(current).style.display = "none";
    
    if(current === start && direction === "prev") {
    	current = end;
    } else if(current === end && direction === "next") {
    	current = start;
    } else if(direction === "next") {
    	current += 1;
    } else if(direction === "prev") {
        current -= 1;
    }
    
    document.getElementById(current).style.display = "block";
}

prev.addEventListener("click", function() {
	slide("prev", start, end);
});

next.addEventListener("click", function() {
	slide("next", start, end);
});
&#13;
#container div {
    display: none;
}

#container div:first-child {
    display: block;
}
&#13;
<div id="container">
    <div id="1">div1</div>
    <div id="2">div2</div>
    <div id="3">div3</div>
    <div id="4">div4</div>
    <div id="5">div5</div>
    <div id="6">div6</div>
    <div id="7">div7</div>
    <div id="8">div8</div>
    <div id="9">div9</div>
    <div id="10">div10</div>
    
    <button id="prev" type="button">Previous</button>
    <button id="next" type="button">Next</button>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

有一种简单的方法可以做你想要的。使用计数器(current),在1启动它,并在用户点击其中一个按钮时增加/减少它,然后循环浏览div列表并使它们全部display:none 1}}除了与您的current值对应的那个。

&#13;
&#13;
var current = 1;
function next(){
	current+=1;
	for(var i = 1; i<10; i++){
		document.getElementById(i).style.display = ((current==i)?"block":"none");
	}
}
function back(){
	current-=1;
	for(var i = 1; i<=10; i++){
		document.getElementById(i).style.display = ((current==i)?"block":"none");
	}
}
&#13;
<form>
<div id="1" style="display:block">one</div>
<div id="2" style="display:none">two</div>
<div id="3" style="display:none">three</div>
<div id="4" style="display:none">four</div>
<div id="5" style="display:none">five</div>
<div id="6" style="display:none">six</div>
<div id="7" style="display:none">aaaa</div>
<div id="8" style="display:none">bbb</div>
<div id="9" style="display:none">nnn</div>
<div id="10" style="display:none">ggg</div>
<button type="button" onclick="next()">Next</button> 
<button type="button" onclick="back()">Back</button> 
</form>
&#13;
&#13;
&#13;

注意:我的代码没有安全措施,因此它会低于1且高于10,您可以随时在每个按钮中使用if语句查看&#39;功能

答案 3 :(得分:0)

var i;
for(i=2;i<=10;i++)
  document.getElementById(''+i).style.display = "none";
i=1; 

document.getElementById('btnNext').onclick = function(){
  document.getElementById(''+i).style.display = "none";
  i++;
  document.getElementById(''+i).style.display = "block";
}

document.getElementById('btnPrev').onclick = function(){
  document.getElementById(''+i).style.display = "none";
  i--;
  document.getElementById(''+i).style.display = "block";
}
<form>
<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
<div id="4">4</div>
<div id="5">5</div>
<div id="6">6</div>
<div id="7">7</div>
<div id="8">8</div>
<div id="9">9</div>
<div id="10">10</div>



 <button type="button" id="btnNext">Next</button> 
 <button type="button" id="btnPrev">Back</button> 
</form>

答案 4 :(得分:0)

首先将onclick属性添加到按钮:

<button type="button" onclick="showNext()">Next</button> 
<button type="button" onclick="showPrev()">Back</button> 

然后通过将class="quest"添加到每个div

来检索div
var el = document.getElementsByClassName("quest");

function showNext(){
for(var i=0;i<el.length; i++){
  if (el[i].style.display == "block"){
  el[i].style.display = "none";
  if ((i+1)==el.length) i=-1;
  el[i+1].style.display = "block";
  break;
  }
}
}

function showPrev(){
for(var i=0;i<el.length; i++){
  if (el[i].style.display == "block"){
  el[i].style.display = "none";
  if (i==0) i=el.length;
  el[i-1].style.display = "block";
  break;
  }
}

}