2016-10-13 3 views
-1

Meine Form hat viele Fragen. Ich bin auf der Suche nach einer Möglichkeit, all meine Fragen in einem einzigen Standort zu haben scheinen und nicht untereinander, wie unten in meinem Code gesehen -Fragen an der gleichen Stelle

<p> <SPAN ID="FirstQuestion"> Blah Blah Blah </p>  

<button class="button1" button onclick="Function1()"><span>NEXT</span></button> 


<p> <SPAN ID="SecondQuestion"> Blah Blah Blah <br> </p>  

<button class="button2" button onclick="Function2()"><span>NEXT</span></button> 

<script> 

function Function1() { 

$("#SecondQuestion").css('visibility', 'visible'); 
$("#FirstQuestion").css('visibility', 'hidden'); 

</script> 

Ich habe schon fast 30 Fragen in Form. Ich möchte nicht, dass diese Fragen untereinander angezeigt werden, sondern sobald die erste Frage gelesen wurde und wenn die Taste NEXT gedrückt wird, sollte die zweite Frage an der gleichen Stelle erscheinen, an der die erste Frage auftauchte (natürlich die erste Frage verbergend) Kann dies oder ich muss für jede Frage eine eigene Seite erstellen und diese verlinken. Hoffe ich bin klar.

+0

Sind Sie mit diesem HTML gebunden? –

+0

Ja. Wenn die Seite geladen wird, sollte nur die erste Frage erscheinen und wenn ich die nächste Frage treffe, sollte die zweite Frage an der Stelle erscheinen, an der die erste Frage aufgetreten ist. – Sabb

+0

Ich verstehe Ihre Anforderungen, aber mit diesem HTML ist es nicht so einfach. Und - für meine Augen - ist es ein bisschen schrecklich, das ist aber wahrscheinlich eine rein persönliche Stilsache. –

Antwort

0

Die unsichtbare Sicht versteckt nur das Element, aber das Element behält den Platz, den es auf dem Bildschirm belegt hat. Sie sollten das CSS-Design namens display verwenden und mit block und none umschalten.

$("#SecondQuestion").css('display', 'block'); 
$("#FirstQuestion").css('display', 'none'); 

EDIT:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p class="question"> BLAH Blah Blah </p> 
 
<p class="question" style="display:none;"> Blah BLAH Blah</p> 
 

 
<button class="button1" button onclick="nextQuestion()"><span>NEXT</span></button> 
 

 

 
     
 

 
<script> 
 
var count = 0; 
 
function nextQuestion() { 
 
    var currentQuestion = $(".question")[count]; 
 
    var nextQuestion = $(".question")[++count]; 
 
    $(currentQuestion).hide(); 
 
    $(nextQuestion).show(); 
 
} 
 
</script>

+0

Du hast es sehr gut erklärt, danke .. Aber ich kann das nicht umsetzen. Mein Formular sollte immer nur eine Frage enthalten. Die erste Seite wird nur eine Frage haben und wenn ich als nächstes dran bin, sollte die nächste Frage an der gleichen Stelle erscheinen. Hoffe, ich mache es klar – Sabb

+0

Okay, ich habe das HTML ziemlich geändert. Ich entfernte die IDs und benutzte die Klasse mit ".question". Auf diese Weise erhalten Sie eine vollständige Liste aller Fragen, und wenn der Benutzer auf "Weiter" klickt, wird die nächste Frage angezeigt. Die Funktion Verbergen bewirkt, dass das Element keine anzeigt, und die Show-Funktion bewirkt, dass das Element einen Block anzeigt. Lass es mich wissen, wenn du Fragen hast! –

+0

Danke. Es funktionierte. Danke an alle, die mir geholfen haben ... Ich habe es von deiner ganzen Hilfe aus arbeiten lassen. – Sabb

0

visibility maskiert nur das Element und lässt den benötigten Platz frei. Vielleicht möchten Sie .show(), .hide()?

0

Es gibt einige Dinge falsch hier:

  1. Ihre Marke nach oben ist nicht richtig.
  2. Wenn Sie Ereignis für jede Frage schreiben klicken, was passiert, wenn es 100 von Fragen

Ich habe versucht zu simulieren, was Sie versuchen, den folgenden Code-Schnipsel

$(document).ready(function(){ 
 
    var count=1; 
 
    $('.question:not(:first-child)').addClass('hide'); 
 
    $('.question .next').bind('click',function(){ 
 
    // alert(count); 
 
     var $prevQuestion=$('.question:nth-child('+count+')'); 
 
     $prevQuestion.removeClass('show').addClass('hide'); 
 
     count=count+1; 
 
     //alert(count); 
 
     var $currQuestion=$('.question:nth-child('+count+')'); 
 
     $currQuestion.removeClass('hide').addClass('show'); 
 
    }); 
 
});
.hide{ 
 
    display:none; 
 
    
 
} 
 
.show{ 
 
    display:block; 
 
    background:red; 
 
}
<div class="question"> 
 
    <p>question1</p> 
 
    <input type="button" class="next" value="next"/> 
 
</div> 
 

 
<div class="question"> 
 
    <p>question2</p> 
 
    <input type="button" class="next" value="next"/> 
 
</div> 
 

 
<div class="question"> 
 
    <p>question3</p> 
 
    <input type="button" class="next" value="next"/> 
 
</div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
zu tun überprüfen

Hoffe, das hilft

+1

Während ich mit Ihren Punkten einverstanden bin, sollten Sie sich die Zeit nehmen zu erklären, warum der Code "* mark up nicht richtig *" ist, damit das OP etwas lernen kann. –

Verwandte Themen