Vielen Dank für Ihre Hilfe im Voraus. Ich habe Code für eine Seite auf meiner Website gehackt und ich bin an einer Straßensperre.Verwenden von 2 Dropdown-Menüs zum Erstellen von 2 nebeneinander liegenden Tabellenzeilen zum Vergleichen von Daten - JSON
Das Ziel ist, zwei Drop-Down-Auswahl zu haben, die für eine Vergleichstabelle zwei Tabellenzeilen (die Anzeige in vertikalen Spalten nebeneinander produzieren.
Ich weiß, dass der Code nicht korrekt ist, weil ich in denen ich ziehe Die gleichen Werte zweimal, aber ich bin mir nicht sicher, wo ich die Änderungen vornehmen soll, um das zweite Drop-down in Daten aus einer zweiten Karriere zu ziehen.
So wie es jetzt funktioniert, erzeugen beide Dropdown-Listen dieselbe Tabellenzeile.Wenn ein Dropdown aktualisiert wird, wird das vorhandene überschrieben Ergebnisse
Hier ist eine https://jsfiddle.net/0qwz497e/, die zeigt, wo ich bei Nr. bin w.
Ich beabsichtige auch, die Drop-Downs durchsuchbar zu machen, aber diese zuerst ausbügeln wollen. Ein Gedanke, den ich hatte, war, das Anrufereignis so zu ändern, dass es nicht aktualisiert wurde, bis ein "Vergleichen" -Knopf angeklickt wurde. Jede Hilfe wäre willkommen. direkt
Dank
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<style>
table { border-collapse: collapse; }
tr { display: block; float: left; }
th, td { display: block; border: 1px solid black; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="" id="my-select"></select>
<select name="" id="my-select-2"></select>
<table id="my-table" border="1" style="width:100%">
<thead>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>
<script>
var myCareerInfo = {
careers: [{
name: 'Occupational Therapy',
id:123,
careerInfo: {
salary: 'Salary: $68,555',
education: 'Education: Masters',
skills: 'Example, Example, Example',
description: 'Occupational therapist help people with their ADLs. They blah blah blah...'
}
}, {
name: 'Phlebotomist',
id:456,
careerInfo: {
salary: 'Salary: $46,753',
education: 'Education: Certificate Program',
skills: 'Example, Example, Example',
description: 'Phlebotomists draw blood. They blah blah blah...'
}
}, {
name: 'Physical Therapist',
id:789,
careerInfo: {
salary: 'Salary: $88,555',
education: 'Education: Doctorate',
skills: 'Example, Example, Example',
description: 'Physical therapist help people recover function after an injury. They blah blah blah...'
}
}]
}
function populateSelectBoxes($select, data) {
var careers = [];
$.each(data, function() {
careers.push('<option value="'+this.id+'">' + this.name + '</option>');
});
$select.append(careers.join(''));
}
function populateTableRow($tableBody, data, selectedCareerId) {
var career;
$.each(data, function() {
if (this.id == selectedCareerId) {
career = this;
return false;
}
});
$tableBody.html('<tr style="width:50%">'+
'<td>' + career.name + '</td>'+
'<td>' + career.careerInfo.salary +'</td>'+
'<td>' + career.careerInfo.education + '</td>'+
'<td>' + career.careerInfo.skills + '</td>'+
'<td>' + career.careerInfo.description + '</td>'+
'</tr>'+
'<tr style="width:50%">'+
'<td>' + career.name + '</td>'+
'<td>' + career.careerInfo.salary +'</td>'+
'<td>' + career.careerInfo.education + '</td>'+
'<td>' + career.careerInfo.skills + '</td>'+
'<td>' + career.careerInfo.description + '</td>'+
'</tr>');
}
populateSelectBoxes($('#my-select'), myCareerInfo.careers);
$('#my-select').change(function() {
var $this = $(this);
var selection = $this.val();
populateTableRow($('#my-table tbody'), myCareerInfo.careers, selection);
});
populateSelectBoxes($('#my-select-2'), myCareerInfo.careers);
$('#my-select-2').change(function() {
var $this = $(this);
var selection = $this.val();
populateTableRow($('#my-table tbody'), myCareerInfo.careers, selection);
});
</script>
Der Großteil des Codes kam von @ DelightedD0D und ihrer ursprünglichen Antwort auf another dropdown question ich auf dieser Antwort nicht kommentiert noch den Ruf hat.
Danke Bitifet. Ich musste es ein wenig zwicken, um die Datenzellen zwischen den beiden Spalten auszurichten, wenn die Daten unterschiedliche Längen hatten (im Beispiel, Karriere 1 + 2 passen gut zusammen, aber Hinzufügen von Physiotherapie verdrehte die Zeilen). Ich konnte es mit deiner Hilfe zum Laufen bringen. Du = Lebensretter! Vielen Dank! –
Ich bemerkte etwas seltsames in der Tabelle rendern bestellen, aber ich würde keine Zeit vergeuden, Arbeitscode zu verstehen. Jetzt bemerke ich, dass css zwickt. Aber, wenn Sie den ganzen Tabellencode sowieso umschreiben, warum nicht einfach in die übliche Reihenfolge bringen? Sie können auch (in beiden Fällen natürlich: Ich vermied es, um Codeänderungen zu minimieren) über die Karriere iterieren, um Codewiederholungen zu vermeiden und bei Bedarf weitere Spalten hinzufügen zu können. – bitifet