WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Javascript (https://www.wn.se/forum/showthread.php?t=14923)

Frej 2006-07-03 15:56

Jag funderar lite över en funktion som jag vill göra med javascript. Jag vill göra en specialaanpassad alert / confirm ruta.
Så jag undrar bara om det finns någon möjlighet att få en function i javascript att stanna upp anropa en annan funktion och sedan fortsätta där den var i den första funktionen.

Typ så här
function minspecialalert() {

... skriver ut massa grejs och får användaren att klicka på antingen
Ja eller Nej

if(ja) {
return true;
}else{
return false;
}

}


function godkan(){
if(minspecialalert) {
...gör nått
}else{
... gör nått annat
}
}


När man anropar funktionen godkan skall den anropa "minspecialfunktion" som skapar en "alert-ruta" i HTML kod
med två alternativ Ja/Nej.
När man trycker på Ja så returneras true från "minspecialfunktion" annars returneras false.

Så jag undrar bara om detta är möjligt eller om jag bör skrota denna idé.

Jag vet att det går att göra för just denna grej, men jag vill kunna använda funktionen lite varstans.

//Frej

Blackex 2006-07-03 19:50

Så här kan man göra:

Kod:

if (confirm("Välj ja eller nej!")) {
 do_ja();
} else {
 do_nej();
}


zoran 2006-07-03 21:24

Citat:

Originally posted by Blackex@Jul 3 2006, 19:50
Så här kan man göra:

Kod:

if (confirm("Välj ja eller nej!")) {
 do_ja();
} else {
 do_nej();
}


Och för att ytterliggare förenkla för urinläggsförfattaren, resultatet Frej vill ha är:

Kod:


function minfunction(){
  if (confirm("Välj ja eller nej")){
  return true;
  } else {
  return false;
  }
}

Fast, jag kan inte riktigt förstå varför han vill ha sån funktion öht. Meningen är väl att man ska minska ner kodmängden och inte skapa massa kod i onödan.

Med andra andra ord skulle jag göra som Blackex föreslog utan att ha en egen funktion för det.

jon 2006-07-03 21:28

verkar vara en parentesmiss.
if(minspecialalert) {
--> if(minspecialalert()) {

/Jon

Frej 2006-07-04 11:11

Alltås koden jag skrev var bara lite kod jag skrev för att visa ungefär hur jag ville, den funkar inte.

Jag vill göra min egen confirm() function, och istället för de fula windows fönstren som dyker upp så vill jag ha en snyggare variant som jag skapar med createElement("div") och denna har jag lite styles på osv. I denna div finns två knappar, Ja och Nej. När man trycker på någon av dessa skall det fungera precis som orginalfunktionen confirm() (eller om man endast har en Ok knapp så skall det fungera som funtionen alert()).

Blackex 2006-07-04 11:23

On du har två knappar kan du bara koppla på onclick="do_ja()" på Ja knappen och onclick="do_nej()" på nej knappen. Så här:

<input type="submit" onclick="do_ja();">

Du kan också koda så här

ja_knapp.onmouseclick = function() { alert('Ditt slutgiltiga svar är Ja.') }

Frej 2006-07-04 12:38

Blackex: Jo det vet jag, frågan var inte hur man gör det utan om det går att pausa en funktion, anropa en annan och fortsätta den första funktionen där den pausade när funktion 2 har returnerat det den ska.

Blackex 2006-07-04 12:52

Citat:

Originally posted by Frej@Jul 4 2006, 12:38
frågan var inte hur man gör det utan om det går
Ja, det borde gå. ;)

Hmm.. Jag tror att du måste ge en mer detaljerad beskrivning av det du försöker göra. Alla funktioner blir "pausade" när de anropar en annan funktion. Koden exekveras sekventiellt. Bortsett från settimeout() som returnerar omedelbart.

Frej 2006-07-04 13:00

Blackex: Ok, tack, då ska jag testa göra en sådan prova lite.

Det jag vill åstadkomma är exakt samma funktion som en javascript Confirm har, men jag vill ha en egen design på mitt confirm-fönster.

Den gör ju så att man inte kan göra någon annat på sidan förän man tryckt antingen ok eller cancle.

Blackex 2006-07-04 13:09

Då förstår jag. Jag tror (men har inte provat) att detta borde kunna lösa ditt problem.

Kod:

if(document.getElementById) {
 window.confirm = function(txt) {
  min_egen_confirm(txt);
 }
}

function min_egen_confirm(txt) {
 // skapa ruta med rubrik och ja/nej knappar
 // koppla knapparna till do_ja() och do_nej()
 // ta bort rutan när någon av knapparna är vald
}

Edit: Varför kolla document.getElementById? Jo, den funktionen gör det lätt för dig att hantera dina olika objekt. Om funktionen saknas (som i gamla webbläsare) så kommer en vanlig confirm ruta att dyka upp. Koden blir därför automatiskt bakåtkompatibel!


Alla tider är GMT +2. Klockan är nu 00:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson