• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Unter-Element auswählen JavaScript

godlike

Warp drölf

Registriert
13 Juli 2013
Beiträge
14.301
Ort
Topkekistan
Hey Ihr,

ich muss gerade einen Shop anpassen und habe hier ein nerviges Problem bei der Ausgabe von Variablen / hinterlegten Werten.

Einerseits habe ich Werte die wie folgt hinterlegt sind:

<option id="breite" name="Breite" type="hidden" default="0.5">
<opt id="1" name="50 mm"></opt>
</option>
Den Wert "50 mm" bekomme ich dann über: pos.calc.getOptionById('breite').value

Jetzt habe ich aber folgende Elemente:

<option id="anzahl_inhalt" name="anzahl_inhalt" type="Hidden" default="1">
<element1>
<grenze calc_value="ceil(($P*$V)/$X)">1-</grenze>
</element1>
</option>

Ich würde jetzt gerne auf den Wert in calc_value zugreifen, nur wie?! Gibt es hier eine Möglichkeit?

Wer Zeit hat kann ja gerne was dazu schreiben, wäre cool :)

LG

godlike
 

Registriert
3 Aug. 2014
Beiträge
28.126
Hi Godlike,

ich würde dir ja gerne helfen, aber ich verstehe dein 2tes Beispiel nicht so recht bzw. ist es zu allgemein.
Kannst du ein konkretes Beispiel geben wie das Markup/HTML aufgebaut ist anstelle des Pseudocodes?
 

godlike

Warp drölf

Registriert
13 Juli 2013
Beiträge
14.301
Ort
Topkekistan
  • Thread Starter Thread Starter
  • #3
Hey! Der Code sieht schon so aus ;) Hier noch mal ein Beispiel:

Das ist ein Eintrag in einem Shop den ich betreue:
<option id="papier_breite" name="Papierbreite" type="hidden" default="0.650">
<opt id="1" name="650 mm"></opt>
</option>

Das kann ich auf einer Seite im Shop (als PDF) ausgeben. Hierzu rufe ich im HTML Quelltext folgendes auf:
{{ pos.calc.getOptionById('papier_breite').value }}

Die Ausgabe ist dann: 0.650. Das passt.

Jetzt habe ich aber auch verschachtelte Einträge wie folgenden:

<option id="anzahl_inhalt" name="anzahl_inhalt" type="Hidden" default="1">
<auflage>
<grenze calc_value="ceil((($Vseitenzahl_inhalt$V/2)/$CVnutzen$CV))">1-</grenze>
</auflage>
</option>
Und bräuchte eine Ausgabe von dem calc_value. Die Frage ist wie stelle ich das an? :/
 

KingJamez

NGBler

Registriert
18 Juli 2013
Beiträge
460
Es sieht nicht so aus als ob du das JS in einem Browserkontext ausführst, oder? Der Kontext wäre aber relativ wichtig um weiterhelfen zu können.

Kannst du `$el.querySelector()` bzw. `$el.querySelectorAll()` in deinem Kontext nutzen? Dann könntest du versuchen damit über die entsprechenden Felder zu iterieren. Auch `$el.childNodes` könnte eine Möglichkeit sein um an die inneren Elemente zu kommen. Mit `getAttribute('calc_value')` solltest du dann auch an die entsprechenden Attribute kommen.
Wenn du querySelector nutzen kannst, kannst du auch versuchen mit der selectorEngine darauf zuzugreifen `$el.querySelector('*[calc_value]')`.

Was davon wirklich klappt ist ein Ratespiel, da `<option>` im HTML kontext keine kindelemente erlaubt, deshalb gehe ich von einem anderen Kontext als HTML aus.
 

Jester

★★★★☆ (Kasparski)

Registriert
1 Dez. 2014
Beiträge
6.050
Ort
Code Azure
Hey,

long time no see :)

Wie Split & KJ schon sagten, scheint es sich hierbei nicht um das tatsächlich gerenderte Markup zu handeln, weil das sicher kein gültiges HTML ist - außer, Du verwendest gezielt eine eigene DTD ^^. Der Bereich zwische <option...> und </option> _scheint_ irgendwie geparst zu werden und dann den text der jeweiligen Option auszugeben. Jedenfalls sieht es so aus. "calc" ist dann die form ID?

Wenn das im 2. Fall auch "calc" ist, versuch doch mal
{{ pos.calc.getOptionById('anzahl_inhalt').value }}

Alternativ:
{{ pos.calc.getOptionById('anzahl_inhalt').text.trim() }}

Und wenn die Wertübergabe in die Option aus dem <auflage>-Teil nicht wie vermutet funktioniert (sollte sie aber, wäre ja sonst unsinnig) in die Option kopieren:
<option id="anzahl_inhalt" name="anzahl_inhalt" type="Hidden" default="1" data-calcvalue="ceil((($Vseitenzahl_inhalt$V/2)/$CVnutzen$CV))">
<auflage>
<grenze calc_value="ceil((($Vseitenzahl_inhalt$V/2)/$CVnutzen$CV))">1-</grenze>
</auflage>
</option>

... und
{{ pos.calc.getOptionById('anzahl_inhalt').dataset.calcvalue }}

~J
 
Zuletzt bearbeitet:

godlike

Warp drölf

Registriert
13 Juli 2013
Beiträge
14.301
Ort
Topkekistan
  • Thread Starter Thread Starter
  • #6
Es sieht nicht so aus als ob du das JS in einem Browserkontext ausführst, oder? Der Kontext wäre aber relativ wichtig um weiterhelfen zu können.
Wie meinst du das? Ja ich führe das in einem Browser aus ;) Ist eine Software, nicht von mir, aus welcher ich Variablen benötige und diese ist so strukturiert
Kannst du `$el.querySelector()` bzw. `$el.querySelectorAll()` in deinem Kontext nutzen? Dann könntest du versuchen damit über die entsprechenden Felder zu iterieren. Auch `$el.childNodes` könnte eine Möglichkeit sein um an die inneren Elemente zu kommen. Mit `getAttribute('calc_value')` solltest du dann auch an die entsprechenden Attribute kommen.
Wo benutzen? Du meinst einfach an einer Stelle in dem "XML"-Eingabeformular per C&P nutzen? Könnte ich versuchen, wüsste aber nicht wo und wie...
Yes! Wirklich lang her :D ;)

Ob calc_value die ID ist weiß ich ehrlich gesagt nicht. ICh habe nur dieses "System" vor die Nase gesetzt bekommen und versuche hier jetzt damit zu arbeiten. Es gibt leider keine Dokumentation o.Ä. und die Entwickler reagieren nicht.

Alle deine Beispiele ergeben leider nur eine leere Ausgabe oder eine 1 :/

Ich habe es aber ehrlich gesagt aufgegeben, ich werde das vmtl nicht lösen können ohne die Mithilfe der "Programmierer" :unknown:

Vielen Dank euch!
 

KingJamez

NGBler

Registriert
18 Juli 2013
Beiträge
460
Wie meinst du das? Ja ich führe das in einem Browser aus ;) Ist eine Software, nicht von mir, aus welcher ich Variablen benötige und diese ist so strukturiert
Ich meine das, weil das kein valides markup ist, deshalb bin ich eher von PDF-html oder anderem ausgegangen.

Wo benutzen? Du meinst einfach an einer Stelle in dem "XML"-Eingabeformular per C&P nutzen? Könnte ich versuchen, wüsste aber nicht wo und wie...
Ich bin davon ausgegangen das du javascript nutzen kannst, ansonsten fällt ein auslesen Ansich flach.
 

Registriert
3 Aug. 2014
Beiträge
28.126
Hm, mal spontan getippt, vielleicht geht es so auf den Wert zuzugreifen:
XML:
<option id="anzahl_inhalt" name="anzahl_inhalt" type="Hidden" default="1">
   <auflage>
       <grenze calc_value="ceil((($Vseitenzahl_inhalt$V/2)/$CVnutzen$CV))">1-</grenze>
   </auflage>
</option>


Davon ausgehend, dass man sich wie in einem XML mit Kindelementen bewegt:
Code:
{{ pos.calc.getOptionById(anzahl_inhalt').auflage.value }}
oder
Code:
{{ pos.calc.getOptionById(anzahl_inhalt').auflage.grenze }}
oder
Code:
{{ pos.calc.getOptionById(anzahl_inhalt').auflage.grenze.value }}


Als letzte Option, die Berechnung nachempfinden bzw. in das Markup kopieren und wie folgt testen.
Das könnte sein dass die mit Dollarzeichen hinterlegten Variablen dir ja in deiner Umgebung zu verfügung stehen und du dann nicht mehr auf das Element zugreifen mußt.

Code:
{{ ceil((($Vseitenzahl_inhalt$V/2)/$CVnutzen$CV)) }}
 

godlike

Warp drölf

Registriert
13 Juli 2013
Beiträge
14.301
Ort
Topkekistan
  • Thread Starter Thread Starter
  • #9
Hey!

Sorry das ich mich erst jetzt melde aber ich hatte viel zu tun...

Ich bin davon ausgegangen das du javascript nutzen kannst, ansonsten fällt ein auslesen Ansich flach.

Ne da muss ich dich leider enttäuschen, ich habe von JavaScript nur rudimentäre Ahnung :/

Ich meine das, weil das kein valides markup ist, deshalb bin ich eher von PDF-html oder anderem ausgegangen.
Es wird auch eine PDF erzeugt, allerdings habe ich keinen Einblick wie das Funktioniert und die "Programmierer" wissen es glaube ich selbst nicht, ich erhalte auf keine meiner Fragen nämlich eine Antwort...

Hm, mal spontan getippt, vielleicht geht es so auf den Wert zuzugreifen:
XML:
<option id="anzahl_inhalt" name="anzahl_inhalt" type="Hidden" default="1">
   <auflage>
       <grenze calc_value="ceil((($Vseitenzahl_inhalt$V/2)/$CVnutzen$CV))">1-</grenze>
   </auflage>
</option>

Okay das probiere ich mal aus :) Danke!

edit: leider kein Erfolg. Ich bekomme bei allen Beispielen ein leeres Ergebnis. Ich habe jetzt empfohlen den Shop auf ein neues besseres System umzustellen... So hat das keinen Wert.

LG

godlike
 
Zuletzt bearbeitet:
Oben