2016-06-07 5 views
1

Es gibt 4 Absätze, ein leeres Textfeld, 1 Kontrollkästchen und eine Schaltfläche.Verstecken/Zeigen von Absätzen nach Checkbox Status und Eingabe Text Wert

Ich möchte 1 Absatz verstecken, wenn ich die Checkbox und „1“ auf dem Feld, die Absätze 2 schreiben zu verstecken, wenn ich die Checkbox und aufschreiben 2 usw.

Die HTML:

<p class="p1">P1</p> 
<p class="p2">P2</p> 
<p class="p3">P3</p> 
<p class="p4">P4</p> 

<input id="txt" type="text" name="fld" value="" /> <br /> <br /> 

P <input id="pcheck" type="checkbox" name="pcheckbox" /> <br /> <br /> 

<input id="disapp" type="button" value="Disappear" /> 

Das JavaScript:

$(document).ready(function(){ 
    $("#disapp").click(function() { 
     if(($("#pcheck").is(":checked")) && ($(#txt).val()=="1") { 
      $(".p1").hide();  
     } 
    }); 
}); 

ich habe versucht, die Formatierung es auch so:

$(document).ready(function(){ 
    $(disapp).click(function() { 
     if(($pcheck.checked) && ($txt.value()=="1")) { 
      $p1.hide();  
     } 
    }); 
}); 

Und ich weiß nicht, welche Formatierung ist richtiger und ich weiß nicht, wie es funktioniert.

+0

Sie müssen Syntaxfehler erhalten siehe [Öffnen der JavaScript-Konsole in verschiedenen Browsern?] (Http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console- In-verschiedenen-Browsern) – Satpal

Antwort

0

Ihr Code weist einige Syntaxprobleme auf, die zu Fehlern führen. Sie können die Entwicklerkonsole in Ihrem Browser verwenden, um die Fehler zu sehen.

Was ist mit Ihrem ersten Skript-Block falsch:

$(#txt).val() nicht funktioniert, weil ein Wähler eine Zeichenfolge sein muss. Ändern Sie es in $('#txt').val().

Auch Ihre if Anweisung fehlt eine schließende Klammern. Es sollte if(($("#pcheck").is(":checked")) && ($(#txt).val()=="1"))

Arbeitsbeispiel sein: https://jsfiddle.net/75wjrbyj/

Ihr zweiter Skriptblock macht die gleichen mehrfach Wähler Fehler, solange Sie die Variablen nicht definieren disapp, $pcheck usw. es Fehler werfen.

+0

Vielen Dank, also hier meine Auslassung ist.Ich muss aufmerksamer sein.Thanks nochmal! – tomalvi

1

Erstellen Sie das Textfeld Wertwähler und Sichtbarkeit ändern toggle() Methode mit einem Boolean-Parameter in diesem Fall is() Methode Booleschen Wert mit zurückgibt und es verwendet werden kann.

$(document).ready(function() { 
 
    $("#disapp").click(function() { 
 
    $(".p" + $('#txt').val().trim()).toggle(!$("#pcheck").is(":checked")); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p class="p1">P1</p> 
 
<p class="p2">P2</p> 
 
<p class="p3">P3</p> 
 
<p class="p4">P4</p> 
 

 
<input id="txt" type="text" name="fld" value="" /> 
 
<br /> 
 
<br />P 
 
<input id="pcheck" type="checkbox" name="pcheckbox" /> 
 
<br /> 
 
<br /> 
 

 
<input id="disapp" type="button" value="Disappear" />


Ihr Code haben verschiedene Fehler: Im ersten Fall gibt Anführungszeichen um das Textfeld ein Selektor und eine zusätzliche Klammer auch fehlt. Ändern Sie es wie if($("#pcheck").is(":checked") && $("#txt").val()=="1"). Im zweiten Fall sind alle Variablen nicht definiert, ich konnte nirgends sehen, wie es definiert ist.

+0

Vielen Dank, aber jetzt klingt es zu kompliziert für mich ((Und ja, ich dachte auch, dass der zweite Fall völlig falsch war, aber irgendwo sah ein Beispiel und dachte, vielleicht wird es funktionieren. Danke wieder – tomalvi

+0

@tomalvi: wie auch immer froh, dir zu helfen :) –

0

Probieren Sie etwas wie dieses

$(document).ready(function(){ 
    $("#disapp").click(function() { 
     if(($("#pcheck").is(":checked"))){ 
if($("#txt").val()=="1") 
      $(".p1").hide(); 
    if($("#txt").val()=="2") 
      $(".p2").hide(); 
     } 
    }); 
}); 
+0

Ja, ich werde es tun nur so, danke! – tomalvi

0

Sie können das gewünschte Verhalten erreichen, indem die index der p Elemente und slice() verwenden.Versuchen Sie folgendes:

$('#disapp').click(function() { 
 
    var index = parseInt($('#txt').val(), 10); 
 
    var $p = $('p'); 
 

 
    if (!index) { 
 
    $p.show(); 
 
    } else if ($('#pcheck').is(':checked')) { 
 
    $p.show().slice(0, index).hide(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>P1</p> 
 
<p>P2</p> 
 
<p>P3</p> 
 
<p>P4</p> 
 

 
<input id="txt" type="text" name="fld" value="" /><br /><br /> 
 
P<input id="pcheck" type="checkbox" name="pcheckbox" /><br /><br /> 
 
<input id="disapp" type="button" value="Disappear" />

+0

Danke, werde es nach einiger Zeit versuchen! – tomalvi

0

Ich denke Schaltergehäuse mehr besser ist, in diesem Fall zu handhaben ...

$("#disapp").click(function() { 
     var p = $("#txt").val(); 
     if($("#pcheck").is(":checked")) { 
      switch(p) { 
      case "1" : $(".p1").hide();  
      case "2" : $(".p2").hide(); 
      case "3" : $(".p3").hide(); 
      case "4" : $(".p4").hide(); 
      default : 
     } 
     } 
    }); 

oder

$("#disapp").click(function() { 
     var p = $("#txt").val(); 
     if($("#pcheck").is(":checked")) {   
      $(".p"+p).hide(); 
     }   
    }); 
+0

Danke, aber ich bin ein Anfänger und leider nicht mit Switch-Fall vertraut noch. Wie auch immer, nochmals vielen Dank. – tomalvi

0

Hier wird etwas, das ich zusammensetze r. Es verändert Teile deines Körpers und schreibt das Skript komplett um. aber es tut, was Sie in Ihrer Beschreibung beschrieben haben.

<script language=JavaScript> 

var NumberOfPs=4; 


var allPars= new Array(NumberOfPs-1) 
self.window.onload=LoadAll 









function LoadAll(){ 
    var i; 

    for (i=0;i<NumberOfPs;i++) 
    { 


    allPars[i]=document.getElementById ("par" + (i+1)).innerHTML; 


    } 
} 






function disappear(){ 

    var x=document.getElementById("txt").value; 
    var i 

    x=Math.floor (x); 


    if (document.getElementById("pcheck").checked) 
    { 



    for (i=1;i<=NumberOfPs;i++) 
    { 


     if (i<=x) 
     document.getElementById ("par"+i).innerHTML=""; 
     else 
     document.getElementById ("par"+i).innerHTML=allPars[i-1]; 



    } 





    } 



} 



</script> 

<body bgcolor="white"> 



    <span id=Par1> 
    <p class="p1">P1</p> 
    </span> 

    <span id=Par2> 
    <p class="p2">P2</p> 
    </span> 


    <span id=Par3> 
    <p class="p3">P3</p> 
    </span> 


    <span id=Par4> 
    <p class="p4">P4</p> 
    </span> 




    <input id="txt" type="text" name="fld" value="" /> <br /> <br /> 

    P <input id="pcheck" type="checkbox" name="pcheckbox" /> <br /> <br /> 

    <input id="disapp" type="button" value="Disappear" onclick=disappear() /> 


</body> 

Beachten Sie, dass ich die P-Tags in einzelne Span-Tags verschoben habe.

Wenn Sie mehr p-Tags hinzufügen, können Sie die var NumberOfPs=4-var NumberOfPs=x ändern, wo x ist die Menge an p-Tags Sie haben.

ps: Wenn Sie die Zahl verringern, die Sie in das Textfeld schreiben und auf verschwinden klicken, werden die ps, die größer als die aktuelle Zahl sind, erneut angezeigt.

+0

Oh, großartig, der Code ist jetzt viel kürzer. Ich bin ein Anfänger, aber wenn ich mehr mit Web-Programmierung vertraut bin, werde ich mir das sicherlich nochmal anschauen. Vielen Dank! – tomalvi

Verwandte Themen