Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]onchange a IE
Forum PHP.pl > Forum > Przedszkole
lukko
Witam,

IE se nie radził z atrybutem onClick i nadałem onChange po tej zamianie pod IE ruszyło smile.gif ale jest małe ale:

do onchange="outsideWindow(); jak najprościej wczytywać wartość z value?

żeby wartość value="1" wczytać onchange="outsideWindow[tutaj wartość value czyli 1]();

Kod
htmlString += '<select name="nazwa" size="30" onchange="outsideWindow1();">';
htmlString += '<option value="1">1</option>';
htmlString += '<option value="2">2</option>';
htmlString += '</select>';
wookieb
  1. outsideWindow(this.value);
lukko
No tak tylko wtedy efekt będzie: outsideWindow1 a do tego na końcu chce jeszcze te nawiasy () czyli by było outsideWindow1()
wookieb
Ale tak się tego nie robi. Po co ci to?
Przekazujesz do funkcji argument i ona juz sobie wywoluje odpowiednie funkcjie jakie chcesz.
lukko
Żeby mi się odwołało do:

Kod
function outsideWindow1() {
     var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu", resizable: false, maximizable: false, minimizable: false});
    
     win.getContent().innerHTML = test();
     win.setDestroyOnClose();
     win.show();
    
   }


w outsideWindow2 inna wartość w outsideWindow3 inna itd. jak się posługiwałem atrybutem onclick to nie było problemu:
Kod
  <option VALUE="#" onclick="outsideWindow1()">Bartoszyce</option>

Kod
  <option VALUE="#" onclick="outsideWindow2()">Bartoszyce</option>


Ale IE tego nie mieliło FF, chrome itd se radziło no ale z IE wiele osób jeszcze korzysta i dlatego kombinuje z onchange by w odpowiednie miejsce mi value pobrało
jmail
a nie mozesz wszystkiego zrzucić do jednej funkcji JS i switchem to przełączyć a na select dać onChange="outsideWindow(this.value)"?
lukko
A nie wiem czy ja tak mądry by se tak dać rade z tym skryptem i dlatego szukam coś dla mnie prostszego w JavaScript z tym onchange
bmL
Ale twoje rozwiązanie jest trudniejsze. Zmień swoją funkcję na taką:

Kod
function outsideWindow(nr)
{
  switch (nr)
  {
    case 1: // tutaj w wypadku 1
            //np:
          var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu", resizable: false, maximizable: false, minimizable: false});
    
          win.getContent().innerHTML = test();
          win.setDestroyOnClose();
          win.show();

    break;

    case 2: // tutaj w wypadku 2
    break;
    case 3: // tutaj w wypadku 3
    break;
   //  itp....
  }
}

i zastosuj rozwiązanie wookieb.
Moim zdaniem to najlepsza droga.

Prawdopodobnie do switcha nie musisz wrzucać całej funkcji tylko jej część bo reszta by się powtarzała ale nie wiem dokładnie co. Więc sam możesz do tego dojść chociaż jest to niekonieczne winksmiley.jpg
jmail
jeszcze na krzywy ryj możesz zrobić tak biggrin.gif i będzie miał to co chcesz

  1.  
  2. function outsideWindow(nr)
  3. {
  4. eval('outsideWindow'+nr+'()');
  5. }
  6.  
lukko
Zastosowałem się do bmL:

Kod
function outsideWindow(nr)
  {
    switch (nr)
    {
      case 1:
      var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu", resizable: false, maximizable: false, minimizable: false});
      win.getContent().innerHTML = test();
      win.setDestroyOnClose();
      win.show();
  
      break;
  
      case 2:
      var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu2", resizable: false, maximizable: false, minimizable: false});
      win.getContent().innerHTML = test2();
      win.setDestroyOnClose();
      win.show();
  
      break;
  
    }
  }


I odwołanie się do tego:
Kod
htmlString += '<select name="nazwa" size="30" onchange="outsideWindow(this.value);">';
  htmlString += '<option value="1">1</option>';
  htmlString += '<option value="2">2</option>';
  htmlString += '</select>';


No i lipa :/ a tak na krzywy ryj:
Kod
function outsideWindow(nr)
  {
  eval('outsideWindow'+nr+'()');
  }


To ja już nie wiem jak to w tym moim przypadku zastosować tongue.gif


Bo ogólnie mam tak:
Kod
function outsideWindow1() {
      var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu", resizable: false, maximizable: false, minimizable: false});
      
      win.getContent().innerHTML = test();
      win.setDestroyOnClose();
      win.show();
      
    }
    
   function outsideWindow2() {
      var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu2", resizable: false, maximizable: false, minimizable: false});
      
      win.getContent().innerHTML = test2();
      win.setDestroyOnClose();
      win.show();
      
    }


one się różnią innerHTML = do innych funkcji i coś tam jest bleble.....

I odwołanie do:

Kod
htmlString += '<select name="nazwa" size="30" onchange="outsideWindow(this.value);">';
  htmlString += '<option value="1">1</option>';
  htmlString += '<option value="2">2</option>';
  htmlString += '</select>';


Co niestety z onchange nie działa :/ Dla podkreslenia z onclick było ok:
Kod
htmlString += '<select name="nazwa" size="30" onchange="self.location.href = this.value">';
  htmlString += '    <option VALUE="#" onclick="outsideWindow1()">1</option>';
  htmlString += '    <option VALUE="#" onclick="outsideWindow2()">2</option>';
  htmlString += '</select>';


No ale pod IE onclick nie trawi snitch.gif

No i nie ogarniam tego choć się nie poddaje :-)
golaod
Do czyjegoś rozwiązania dodaj może
Kod
switch( parseInt( nr ) ) {
//reszta
}
lukko
Kod
function outsideWindow(nr)
  {
    switch( parseInt( nr ) ) {
    {
      case 1:
      var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu", resizable: false, maximizable: false, minimizable: false});
      win.getContent().innerHTML = test();
      win.setDestroyOnClose();
      win.show();
  
      break;
  
      case 2:
      var win = new Window("win2", {className: "dialog", top:250, left:320, width:540, height:420, yIndex:20, opacity:1, title:"Nazwa sklepu2", resizable: false, maximizable: false, minimizable: false});
      win.getContent().innerHTML = test2();
      win.setDestroyOnClose();
      win.show();
  
      break;
  
    }


No i:

Kod
htmlString += '<select name="nazwa" size="30" onchange="outsideWindow(this.value);">';
htmlString += '<option value="1">1</option>';
htmlString += '<option value="2">2</option>';
htmlString += '</select>';


No niestety nie działa yy a ja już się tnę tongue.gif nie ma jakiegoś myku by pobrać outsideWindow[numer value]() - i sprawa by była rozwiązana smile.gif no przynajmniej prosto mi tak napisać heh
wookieb
No a zobacz co ci wywala konsola błędów. W firefoxie jest ładna wbudowana. Potem zoptymailzuj ten swój kod bo patrzeć się na niego nie chce.
nospor
onchange pod IE sprawia problemy. To raz.
A dwa to ze nie this.value a this.options[this.selectedIndex].value

  1. <select name="nazwa" size="30" onclick="alert(this.options[this.selectedIndex].value);">
  2. <option value="1">1</option>
  3. <option value="2">2</option>
wookieb
Cytat(nospor @ 12.08.2009, 09:34:12 ) *
A dwa to ze nie this.value a this.options[this.selectedIndex].value

Nie ma różnicy. To i to będzie działać.
Najpierw niech sprawdzi konsolę a to podstawa wszelkich działań.
Potem niech sobie na poczatku funkcji outsideWindow wyswietli jakiegos alerta ktory mu pokaze jaka jest aktualna wartość.
POTEM niech sprawdzi w ktorego case'a wchodzi switch (tez mozna alertami)
bmL
Golaod szedł w dobrym kierunku tylko że FX wywala błąd jak chcemy rzutować tą wartość do integera ale możesz:
Kod
      case 1:

pozmieniać na
Kod
      case '1':
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.