Zurück   PSD-Tutorials.de > Webbereich > PHP und andere Scriptsprachen


Antwort
 
Themen-Optionen
Alt 23.05.2012, 15:56   #1 Nach oben scrollen
Newbie
Newbie
 
Benutzerbild von Espressolia
 

Registriert seit: 04.11.2009
Ort: Sachsen
Beiträge: 65
Kamera: meine Augen :-)
Verwendet: Photoimpakt, Swishmax und diverse andere

Internet Explorer seltsames Problem mit Debugging


Hallo,

ich habe ein sehr seltsames Problem mit den Internet Explorer Also ich habe ein JS Script, welches in Firefox und co. auch einwandfrei funktioniert nur im IE nicht. Also gut dacht ich mir werfe ich mal das IE- eigne Debugger- Tool an. Nachdem ich aber den Debugger starte und die Seite neu geladen wird funktioniert das Scrip auf einmal Egal ob ich ihn dann wieder beende geht das Script immernoch... Erst wenn ich den IE schließe und neu starte geht das Script wieder solange nicht bis ich den Debugger gestartet hab

Wie soll ich den Code Debuggen wenn er dann nach den starten läuft?

echt seltsam soetwas hab ich noch nicht erlebt!

Gruß,
Espressolia
  Mit Zitat antworten


Alt 23.05.2012, 16:05   #2 Nach oben scrollen
Newbie
Newbie
 

Registriert seit: 03.04.2011
Ort: Hude
Beiträge: 53
Verwendet: Jetbrains PhpStorm

Posten?

Du weißt es gibt 2 Dinge: Browser die Javascript beherrschen und wissen wie es geht und Internet Explorer

Das was der IE über JS sagt ist Müll ;-)
  Mit Zitat antworten
Alt 23.05.2012, 16:07   #3 Nach oben scrollen
localhorst
Spezial-SupporterSpezial-SupporterSpezial-SupporterSpezial-Supporter
 
Benutzerbild von MyBad
 

Registriert seit: 18.12.2006
Beiträge: 1.807

Das ist ja mal ein wirklich merkwürdiges Problem. Aber beim IE wundert mich eigentlich nichts mehr. Keine Ahnung, was anderes sein sollte, wenn der Debugger läuft. Aber post mal das Skript vielleicht liegt es ja doch da dran.
  Mit Zitat antworten
Alt 23.05.2012, 16:37   #4 Nach oben scrollen
fortgeschrittener
Newbie
 

Registriert seit: 08.02.2007
Beiträge: 28
Verwendet: Photoshop, Gimp, Illustrator, Inkscape, Notepad++, Eclipse, TYPO3

Hi,

Vielleicht mal durch einen JS-Validator laufen lassen (http://www.jslint.com/), der IE hat oft Probleme wegen kleiner Syntaxfehler, die von anderen Browsern vernachlässigt werden.

Gruß
  Mit Zitat antworten
Alt 23.05.2012, 16:52   #5 Nach oben scrollen
Newbie
Newbie
Themenstarter
 
Benutzerbild von Espressolia
 

Registriert seit: 04.11.2009
Ort: Sachsen
Beiträge: 65
Kamera: meine Augen :-)
Verwendet: Photoimpakt, Swishmax und diverse andere

Mit folgendem selectfeld werden die Funktionen aufgerufen:
Code:
<select id="persons" class="pflicht" name="fganzahl" onchange="calc();child('kids');teenage('teen');">...</select>
Die Funktion calc() ist für die Berechnung des Preises zuständig, diese müsste eigentlich funktionieren, da der Preis korrekt im IE ausgegeben wird.
Code:
function calc(){
 travel();
 artv = getSelectedValue("variants");
  //console.log(artv);
  
 //art = getSelectedValue($("#variants"));//$('select#variants').val(); 
 //art = document.getElementById("variants").options[document.getElementById("variants").selectedIndex].value;
 persons = parseInt(getSelectedValue("persons"));
 //console.log(persons);
 //persons = document.getElementById("persons").options[document.getElementById("persons").selectedIndex].value;
 regiov = getSelectedValue("regio");
 //console.log(regiov);
 //regio = document.getElementById("regio").options[document.getElementById("regio").selectedIndex].innerHTML;
 
 kids = parseInt(getSelectedValue("kids"));
 //console.log(kids+'kids');
 //kids = document.getElementById("kids").options[document.getElementById("kids").selectedIndex].value;
 teen = parseInt(getSelectedValue("teen"));
 //console.log(teen+'teens');
 //teen = document.getElementById("teen").options[document.getElementById("teen").selectedIndex].value;
 traveler = parseInt(getSelectedValue("traveler"));
 //console.log(traveler+'traveler');
 //console.log('----------')
 //traveler = document.getElementById("traveler").options[document.getElementById("traveler").selectedIndex].value;
  
  pricesSplit = prices.split("#");
  for (i=0;i<pricesSplit.length;i++){
   packet = pricesSplit[i].split("|")[0];
   //console.log(i+"_"+packet.toLowerCase()+"__"+artv.toLowerCase())
   if (packet.toLowerCase().match(artv.toLowerCase())){ 
   console.log(i+"_"+packet+"__"+artv);
 //if (packet.toLowerCase().match(art)){    
     val =  pricesSplit[i].split("|");
  console.log(val);
      for (x=0;x<val.length;x++){
  console.log(val[x]+"---"+regiov);
        if (val[x].toLowerCase().match(regiov.toLowerCase())) {
  //if (val[x].toLowerCase().match(regio)) {
   artdb        = val[0];
   region        = val[1];
   preis                = parseInt(val[2]);
   regioaufpreis   = parseInt(val[3]);
   aufpreispersoneneur   = parseInt(val[4]);
   preispersonen         = parseInt(val[5]);
   aufpreisbuchungeur    = parseInt(val[6]);
   kind                  = parseInt(val[7]);
   jugend                = parseInt(val[8]);
   vielfahrer            = parseInt(val[9]);
   
   calcPrice(preis,regioaufpreis,aufpreispersoneneur,preispersonen,persons,aufpreisbuchungeur,kids,teen,traveler,kind,jugend,vielfahrer)
      break;
        }
      }
    }
  }                
}
Unter dem selectfeld persons befinden sich noch 2 selectfelder (Anzahl der Kinder und Anzahl der Jugendlichen), die mit Javascript befüllt werden sollen.

Die Funktion child() ist dafür zuständig, die Auswahlfelder des Selectfeldes Anzahl der Kinder mit Zahlen zu füllen:
Code:
function child(elemToFill,id){
 persons = getSelectedValue("persons");
 // console.log(persons);
 //persons = document.getElementById("persons").options[document.getElementById("persons").selectedIndex].value;
 kids = getSelectedValue("kids");
 // console.log(kids);
 //kids = document.getElementById("kids").options[document.getElementById("kids").selectedIndex].value;
 teen = getSelectedValue("teen");
 // console.log(teen);
 //teen = document.getElementById("teen").options[document.getElementById("teen").selectedIndex].value;
 traveler = getSelectedValue("traveler");
 // console.log(traveler);
 //traveler = document.getElementById("traveler").options[document.getElementById("traveler").selectedIndex].value;
 temp = "0,";
 if(persons%2 == 0){
  kidsCnt=((persons/2)-teen);
  //alert ('kindt'+kids); // zahl gerade
 }else{
  kidsCnt=(((persons-1)/2)-teen); 
  //alert ('kindf'+kidsCnt); // zahl ungerade 
 }
 for (i=1; i < parseInt(kidsCnt)+1; i++){
  temp += i+",";
 }
 artenfill(temp,'kids',kids);
}
Die Funktion teenage() ist dafür zuständig, die Auswahlfelder des Selectfeldes Anzahl der Jugendlichen mit Zahlen zu füllen:
Code:
function teenage(elemToFill,id){
 persons = getSelectedValue("persons");
 // console.log(persons);
 //persons = document.getElementById("persons").options[document.getElementById("persons").selectedIndex].value;
 kids = getSelectedValue("kids");
 // console.log(kids);
 //kids = document.getElementById("kids").options[document.getElementById("kids").selectedIndex].value;
 teen = getSelectedValue("teen");
 // console.log(teen);
 //teen = document.getElementById("teen").options[document.getElementById("teen").selectedIndex].value;
 traveler = getSelectedValue("traveler");
 // console.log(traveler);
 //traveler = document.getElementById("traveler").options[document.getElementById("traveler").selectedIndex].value;
 
 temp = "0,";
 if(persons%2 == 0){
  teenCnt=((persons/2)-kids);
  //alert (persons+'kindt'+kids); // zahl gerade
 }else{
  teenCnt=(((persons-1)/2)-kids); 
  //alert (persons+'kindt'+kids); // zahl gerade
 }
 for (i=1; i < parseInt(teenCnt)+1; i++){
  temp += i+",";
 }
 artenfill(temp,'teen',teen);
}
function travel(elemToFill,id){
 // ermitteln wieviele personen
 temp = "0,";
 reisende = $("#persons").val();
 selectedValue = $("#traveler").val();
 for (i=1; i < parseInt(reisende)+1; i++){
  temp += i+",";
 }
 artenfill(temp,'traveler',selectedValue);
}
Ich hoffe, ihr versteht diese Funktionen und könnt mir helfen. Dieses script ist von jemanden anderem und ich soll es ie-fähig machen.
  Mit Zitat antworten
Alt 23.05.2012, 17:02   #6 Nach oben scrollen
fortgeschrittener
Newbie
 

Registriert seit: 08.02.2007
Beiträge: 28
Verwendet: Photoshop, Gimp, Illustrator, Inkscape, Notepad++, Eclipse, TYPO3

ich tippe auf console.log() :-)
http://stackoverflow.com/a/690300
  Mit Zitat antworten
Alt 23.05.2012, 17:49   #7 Nach oben scrollen
Newbie
Newbie
Themenstarter
 
Benutzerbild von Espressolia
 

Registriert seit: 04.11.2009
Ort: Sachsen
Beiträge: 65
Kamera: meine Augen :-)
Verwendet: Photoimpakt, Swishmax und diverse andere

console.log? Das ist doch überall auskommentiert? Sorry ich stehe leider aufm Schlauch zurzeit
  Mit Zitat antworten
Alt 23.05.2012, 17:52   #8 Nach oben scrollen
localhorst
Spezial-SupporterSpezial-SupporterSpezial-SupporterSpezial-Supporter
 
Benutzerbild von MyBad
 

Registriert seit: 18.12.2006
Beiträge: 1.807

HTML-Code:
if (packet.toLowerCase().match(artv.toLowerCase())){ 
   console.log(i+"_"+packet+"__"+artv);
Hier ist es noch nicht auskommentiert.
  Mit Zitat antworten
Alt 23.05.2012, 18:07   #9 Nach oben scrollen
Newbie
Newbie
Themenstarter
 
Benutzerbild von Espressolia
 

Registriert seit: 04.11.2009
Ort: Sachsen
Beiträge: 65
Kamera: meine Augen :-)
Verwendet: Photoimpakt, Swishmax und diverse andere

Oh schande über mein Haupt, hab ich übersehen Supi jetzt geht es immer
Mal sehen obs morgen auch auf IE8 bei WinXP klappt
  Mit Zitat antworten
Alt 28.05.2012, 19:07   #10 Nach oben scrollen
Helper
HelperHelper
 

Registriert seit: 06.06.2009
Beiträge: 265
Kamera: Lumix DMC-TZ3
Verwendet: Photoshop CS4, Nodepad++, Eclipse, Gimp,...

Ansonsten hilft dann manchmal auch das gute alte Debuggen mit Testausgaben, einfach so lange alerts einbauen, bis man den Fehler auf eine Zeile eingegrenzt hat und dann die Zeile Stück für Stück versuchen.
  Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen