• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Switch will mit String nicht

@jspit: stimmt - so genau hatte ich mir das gar nicht angesehen... hab' nur .getAttribute mit einem data-* Attribut gesehen und bin dann von einer Node ausgegangen.

@m-obj: für mich ergibt dein komplettes Konstrukt mit dem GetCorrectElement() und GetData() sowieso keinen Sinn. Warum arbeitest du da mit irgendwelchen selbstdefinierten Attributen zur eindeutigen Identifikation, wenn du auch das ID-Attribut verwenden könntest? Und wenn du sowieso das Element schon hast (wie bei deinem Testaufruf), warum muss du dann noch über die Identifikation arbeiten?
Und wie ein schlauer schon gesagt hat, dein JS Code ist nicht besonders gut - lass' den mal durch jslint oder jshint laufen...
 
Also Entschuldigung für meine anfängliche Programmierung. Ich stamme eher aus der SPS-Programmierung. Ich hab den Code fast so von einem Bekannten bekommen, der auch eine Laie in der Technik ist. GetData rufe ich aus meinem C++-Code auf. Und GetCorrectElement brauche nur, weil ich als Antwort von der SPS bekomme welche Variable welchen Wert hat und diese steht dann in der HTML bei data-PDD, data-PDDIn oder data-PDDOut. Es geht als um eine Visualisierung für eine SPS. Dabei findet die Kommunikation mit der SPS in dem C++-Code statt und von da werden dann die Werte an HTML/JS weitergegeben. Und das ganze dann auch auf den umgekehrten Weg, wenn man einen Wert setzen möchte. Achja, das ID-Attr. verwende ich deswegen nicht, 1. weil dort ein eindeutiger Name stehen soll und keine Variable und 2. weil man in der ID keinen Punkt verwenden kann und ich den zwingend brauche (mit Stringreplace wollte ich nicht arbeiten). Und 3. wenn ich z.B. eine Lampe darstellen möchte hab ich einmal data-PDDIn (um sie zu schalten) und data-PDDOut (zum darstellen ob sie an oder aus ist), und beides sind unterschiedliche Variablen und ich kann ja nur eine ID verwenden.

Aber ich bin natürlich offen für jegliche Vorschläge.

Edit: Der DOYTYPE wird generiert von der Entwicklungsumgebung, um dem hab ich mich jetzt nicht gekümmert.
 
Zuletzt bearbeitet:
Das macht keinen Unterschied.

Mach doch mal:alert (Type == "ButtonLight")

Nachtrag: Und wie gesagt bei mir funktioniert dein Beispielcode
 
alert gibt true aus, deswegen ja dann mit If-Else-If.
Ja im FF und IE klappt der auch. Nur nicht wenn ich ihn über Qt ausführen lasse in der Anwendung. Der embedded Browser scheint nen Bug zu haben.
 
Nein hat er nicht, wie gesagt ich hab den gleichen in einer älteren Version und da funktioniert der Code, den du uns gezeigt hast. Zumal das eine fundamentale Sache ist, die sich seit 1998 sich nciht geändert hat, wenn da ein Browser einen Bug hätte, wäre er nicht einsatzfähig.
 
Nimm' deinen HTML und deinen JS Code und schau' in dir in einem Texteditor an, der auch nicht druckbare Zeichen darstellen kann (z.B. Notepad++). Ich hab' immer noch den Verdacht, dass da irgendwo so ein Zeichen drin ist.

PS: Jetzt ergibt dein Code etwas mehr Sinn. Durch jslint/jshint solltest du ihn trotzdem schicken.
 
In FF und IE funktioniert er, nur nicht in Qt. Das ausgelessene von userAgent ist von Qt.
Ich dachte der wäre:
navigator.userAgent gibt mir
Code:
Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.21 (KHTML, like Gecko) HTML5Test2 Safari/537.21

und ich habe:
Code:
AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+

Und in dem Webkitbrowser funktioniert der Code.

Also noch mal der Reihe nach.

Folgrendes passiert in diesem eingebautem Browser
Type = actObject.getAttribute("data-obfunc");

* alert(Type) ergibt "ButtonLight"
* alert('*'+Type+'*') ergibt "*ButtonLight*"
* alert(typeof Type) ist String
* alert(Type == "ButtonLight") ist true
* switch Type { case "ButtonLight": alert('ok'); break; } ergibt nichts?

Das wäre sehr seltsam und ich muss sagen ich kann das auch nicht glauben.
 
Ich wollte es am Anfang auch nicht glauben. Aber der Ablauf, wie du ihn geschildert hast ist richtig. Im Webkitbrowser funktioniert es nicht (nur in den Standardbrowserngehts). Dort gibt er mir aber "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.21 (KHTML, like Gecko) HTML5Test2 Safari/537.21" aus.
 
und wie gesagt, das ist eine neuere Kennung als in meinem Browser und da das ganze eine absolut triviale Geschichte, musst du etwas falsch machen, was wir aber aus den Informationen (du hast jeden einzelnen Schritt, den ich aufgeführt habe tatsächlich so eingebaut?) nicht herausfinden können.
 
Zurück
Oben