JavaScript: Wie kann ich es vermeiden, das sich sozusagen die Seite aktualisiert oder was das auch immer ist, damit das Popup offen bleibt?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Dann solltest du uns ggf. den kompletten Code zeigen bzw. die Stelle, welche für die Steuerung des Popups zuständig ist. Anhand dieses Schnipsels können wir da nix nachvollziehen. Ist so ala mein Auto startet nicht, mit einem Bild vom Autoreifen.

Im Idealfall gehst du auf JSFiddle.net und fügst das Beispiel dort ein, so dass wir uns das Live anschauen können.

Aktuell hilft der Quellcode wenig und die Beschreibung wirkt auch wirr.

Möglich wäre das außen rum eine Form ist, die irgendwie abgesendet wird, was eigentlich bei Type button nicht passieren sollte. Da hilft im Zweifel preventDefault vom Event oder return false, je nach Kontext aber wie gesagt, dafür benötigen wir erstmal mehr Informationen.

Woher ich das weiß:Beruf – Softwareentwickler/Projektleiter seit 2012
1
@xxlolxx283

Dein Click auf den Button bubbled weiter auf das Elternelement hover_bkgr_fricc. Der Click darauf versteckt damit dann eben auch dein Popup. Lösung wäre also das Bubbling zu unterbinden:

<button type="button" onclick="document.getElementById('demo').innerHTML = '123'; event.stopPropagation()">TEST</button>

event.stopPropagation() sorgt hier dafür, dass das nicht mehr passiert.

So einfach ist das, wenn man ein funktionierendes Beispiel hat :)

0
@apachy

Funktioniert schonmal, aber habe das mal mit nem anderen Script probiert:

function myFunction() {
 idArray = new Array()
 idArray [1] = "First paragraph text"
 idArray [2] = "Second paragraph text"
 idArray [3] = "Third paragraph text"
 idArray [4] = "Fourth paragraph text"
 idArray [5] = "Fifth paragraph text"

 document.getElementById("select").onclick = myFunction;
 randomParagraph = Math.floor(Math.random()*5);

 document.getElementById("result").innerHTML = idArray[randomParagraph + 1];
}

Der btn:

 <button type="button" id="select" onclick="myFunction(); event.stopPropagation() " >Pick text</button>

jetzt geht es nicht zu wenn man das 1 mal klickt, aber beim 2 klick geht es wieder zu. Wie behebe ich das?

0
@xxlolxx283

Du bindest das Klick-Event aus einen mir nicht nachvollziehbaren Grund innerhalb der Funktion nochmal neu. Die Zeile:

 document.getElementById("select").onclick = myFunction;

sorgt dann dafür, dass es beim zweiten mal zugeht, weil nun nicht mehr:

myFunction(); event.stopPropagation()

ausgeführt wird, sondern nur myFunction.

0
@apachy

Ich bin entwas verwirrt, du meinst so?

function myFunction() {
 idArray = new Array()
 idArray [1] = "First paragraph text"
 idArray [2] = "Second paragraph text"
 idArray [3] = "Third paragraph text"
 idArray [4] = "Fourth paragraph text"
 idArray [5] = "Fifth paragraph text"

  document.getElementById("select").onclick = myFunction(); event.stopPropagation()
 randomParagraph = Math.floor(Math.random()*5);

 document.getElementById("result").innerHTML = idArray[randomParagraph + 1];
}

<button type="button" id="select" onclick="myFunction()" >Pick text</button>
0
@xxlolxx283

Nein ich meine du sollst die Zeile ganz lassen. Was soll die bewirken? Warum willst du außen im Button sagen, dass myFunction angerufen werden soll, wenn auf dem Button gedrückt wird und in myFunction sagst du das gleiche nochmal. Das reicht draußen im onclick.

0

Ich vermute einfach mal stark, das irgendwas an den Server gesendet wird und du deswegen einen Reload auslöst. Falls das so ist, sollte Ajax für dich das richtige Stichwort sein.

Aber ja deine Beschreibung und dein Codeschnipsel lassen nur ahnen was du willst.

Du definierst die Funktion showText(id), rufst sie aber nicht auf. Ich glaube, Du hast nur einen Teil deines Codes hier reinkopiert.

Weiss der geier wo du showtxt() aufrufst.. aber mach mal am ende der funktion ein return false; dahin.

Was möchtest Du wissen?