die spezifische Frage zu beantworten, es sieht aus wie das Problem in dem folgenden Codeblock geschieht:
$('#selectNumber1').on('change', function(){
firstValue = $(el).text();
$('#nm1').val(firstValue);
});
$('#selectNumber2').on('change', function(){
secondValue = $(el2).text();
$('#nm2').val(secondValue);
});
Die Variablen el
und el2
ein wenig weiter oben das Skript erstellt werden, in zwei Schleifen, die erstellen die Auswahloptionen. Wenn die erste Schleife abgeschlossen ist, el
zur letzten Option gleich ist, dass die Schleife erzeugt - Z. Wenn die zweite Schleife beendet ist, ist gleich die el2
letzte Option, dass diese Schleife erzeugt - auch Z.
Da el
und el2
sind nicht verändert, werden sie auf die Z-Option in der ersten Dropdown und die Z-Option in der zweiten Dropdown-Liste verweisen immer auf.
Um dies zu lösen, müssen Sie nur die Beschriftung der Option auswählen, die gerade ausgewählt ist. Sie können dies einige hilfreiche jQuery Methoden tun:
firstValue = $("#selectNumber1").find(":selected").text(); //For the first dropdown's selected label
secondValue = $("#selectNumber2").find(":selected").text(); //For the second dropdown's selected label
Hier ist eine Erklärung, was passiert:
$("#selectNumber1")
- jQuery wird versuchen, das Element mit der ID „selectNumber1“ zu finden;
.find(":selected")
- Suchen Sie mit den Elementen, die jQuery in Schritt 1 findet, die untergeordneten Elemente mit dem Attribut "selected" (suchen Sie die ausgewählte Option). und
.text()
- Geben Sie den inneren Text des ersten in Schritt 2 gefundenen Elements zurück.
setzen sie alle zusammen, werden Sie mit diesem Ende:
$('#selectNumber1').on('change', function(){
firstValue = $("#selectNumber1").find(":selected").text();
$('#nm1').val(firstValue);
});
$('#selectNumber2').on('change', function(){
secondValue = $("#selectNumber2").find(":selected").text();
$('#nm2').val(secondValue);
});
, die für Sie gut funktionieren sollte, aber alles, was gesagt wird, würde ich prüfen, einige tun großen aufzuräumen und Vereinfachung der dein Code. Die Datenstruktur, mit der Sie arbeiten, ist schwierig zu handhaben (wenn Sie keine Wahl haben, weil Ihnen so Daten zur Verfügung gestellt werden, verstehe ich), werden Variablen definiert und neu definiert, was es schwierig macht, zu folgen, und in einigen wird jQuery verwendet Orte und gerade JS in anderen, die auch schwer zu folgen sein können.
Für Datenstruktur, könnte es für Sie viel einfacher, wenn Ihre Daten etwas sah mehr wie folgt aus:
var data = {
x: {
y: 0.1,
z: 0.2
},
y: {
x: 0.9,
z: 0.3
},
z: {
x: 0.8,
y: 0.7
}
}
Wenn Ihre Daten in einer Matrix wie das war, dann könnte man Datenwerte als data.x.y
Referenz für wenn x zuerst und y Sekunde gewählt wird, gegen data.y.x
für wenn das Gegenteil der Fall ist. Wenn Sie diese Eigenschaften als Variablen verwenden müssen, sagen Sie var first = "x" und var second = "y", dann könnten Sie data [first] [second] verwenden.
Die verschachtelten Eigenschaften erleichtern das Leben in diesem Fall.
Das ist nur zum Nachdenken, viele Möglichkeiten, um die Aufgabe zu erfüllen.
Hoffe, das hilft!
Hilfreiche Links: https://api.jquery.com/find/ https://api.jquery.com/selected-selector/ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors
So wollen Sie die erste txtbox = 1drpdown und 3. txtbox = 2drpdown. Habe ich recht? Wenn ja, warum nicht einfach den Wert für change-Ereignis mit javscript kopieren – Iceman
Das: '{(1,2): 0.1}' ergibt keinen Sinn. Sie könnten '{" 1,2 ": 0.1}' oder '' {"(1,2)": 0.1} '' machen, aber Sie können nicht '(1,2)' wie beim Objekteigenschaften-Schlüsselnamen haben . – nnnnnn