Probleme bei einem JS
Hallo Gemeinschaft,
in diesem JS werden Daten in ein array geschrieben
nun möchte ich gerne, dass wenn 10 Einträge erreicht sind, dass dann das script abbricht - könnt ihr mir dabei bitte helfen
in diesem JS werden Daten in ein array geschrieben
nun möchte ich gerne, dass wenn 10 Einträge erreicht sind, dass dann das script abbricht - könnt ihr mir dabei bitte helfen
function getTreatmentDates(index, isId){
var idP = null;
if(isId == true){
idP = index;
}
else{
idP = hashPatients[index - 1];
}
selectedTreatmentDate = "";
result = $.ajax({
type: 'POST',
async: false, // Wait for result from server.
url: 'actions.php',
data: ({
action: "get_treatment_dates",
id_patient: idP //hashPatients[index - 1]
}),
success: function(data) {
//alert(data);
}
}).responseText;
;
var data = $.parseJSON(result);
$("#patient-treatmentdates-select-result").empty()
var list = $("#patient-treatmentdates-selectable").empty();
var count = 0;
for (var i in data) {
var staff = $.parseJSON(getStaffById(data[i]['id_staff']));
var treatment = $.parseJSON(getTreatmentById(data[i]['id_treatment']));
list.append('<li class="ui-widget-content" style="height: 64px;">' +
data[i]['treatment_date'] + '<br /><font style="font-size: 0.87em;">bis ' +
data[i]['treatment_time_end']+ " (" + treatment['shortcut'] +
") <br />"+ staff['prename'] + " " + staff['surname'] + '</font></li>');
hashTreatmentDates[count++] = data[i]['id_patient_treatment'];
}
return result;
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6307071238
Url: https://administrator.de/contentid/6307071238
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
23 Kommentare
Neuester Kommentar
Du könntest doch in deinem for-Loop einfach einen Counter +1 zählen lassen und wenn dieser 10 erreicht lässt du den loop abbrechen.
So zum beispiel:
So zum beispiel:
(function() {
let forCounter = 0;
for (let i = 0; i < 50; i++) {
if (forCounter === 10) { break; }
// Rest des Codes
console.log(i);
forCounter++;
}
})();
Zitat von @martenk:
hi -
kannst du mir dabei helfen, dass die for schleife nicht von 0 anfängt, sondern von hinten nach vorne läuft - also vom letzten ds
hi -
kannst du mir dabei helfen, dass die for schleife nicht von 0 anfängt, sondern von hinten nach vorne läuft - also vom letzten ds
Du kannst deinen for-Loop dahingehend umschreiben, sodass du anstatt von i++ einfach i-- verwendest.
Beispiel wäre so:
const datenArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
(function () {
let forCounter = 0;
for (let i = datenArray.length; i >= 0; i--) {
// Check if we reached 10
if (forCounter === 10) break;
// CODE
console.log(i);
// forCounter +1
forCounter++;
}
})();
Naja, wie genau deine Variable data oder result ausschaut und was du für Werte gegeben hast weiß ich nicht.
Ich könnte jetzt raten und auf gut Glück was schreiben aber das wird wohl kaum helfen.
//Edit:
Anhand der Struktur wie du aus dem data-Objekt daten ließt denk ich einfach mal du hast dort Werte als JSON-Objekt stehen oder? Wie viele Objekte hast du denn in einem result?
Wenn es mehrere sind kannst du einfach über .length gehen und daraufhin den loop schreiben. Wenn nur ein Objekt gegeben ist schreibst du einfach einen weiteren counter vor dem Loop und lässt diesen dann wie im beispiel +1 zählen und prüfst mit if, ob der Counter 10 erreicht hat
Ich könnte jetzt raten und auf gut Glück was schreiben aber das wird wohl kaum helfen.
//Edit:
Anhand der Struktur wie du aus dem data-Objekt daten ließt denk ich einfach mal du hast dort Werte als JSON-Objekt stehen oder? Wie viele Objekte hast du denn in einem result?
Wenn es mehrere sind kannst du einfach über .length gehen und daraufhin den loop schreiben. Wenn nur ein Objekt gegeben ist schreibst du einfach einen weiteren counter vor dem Loop und lässt diesen dann wie im beispiel +1 zählen und prüfst mit if, ob der Counter 10 erreicht hat
Ich würde jetzt einfach mal antesten, ob du mit einem Simplen Counter in deinem loop arbeiten kannst.
let forLoopCounter = 0;
for (const i in data) {
if (forLoopCounter === 10) break;
// Rest des Codes
const staff = $.parseJSON(getStaffById(data[i]['id_staff']));
const treatment = $.parseJSON(getTreatmentById(data[i]['id_treatment']));
list.append(
'<li class="ui-widget-content" style="height: 64px;">' +
data[i]['treatment_date'] +
'<br /><font style="font-size: 0.87em;">bis ' +
data[i]['treatment_time_end'] +
' (' +
treatment['shortcut'] +
') <br />' +
staff['prename'] +
' ' +
staff['surname'] +
'</font></li>'
);
hashTreatmentDates[count++] = data[i]['id_patient_treatment'];
forLoopCounter++;
}
In deinem loop einfach console.log(data);
In.. deine.. Konsole?
Gibt es in der data-Variable nur ein Objekt? Oder sind es mehrere? Wenn es nur ein Objekt ist dann kommst du nicht wirklich weiter, ohne etwas an dem Select im SQL umzuschreiben. Die Daten werden ja von einer action.php geholt.
Und die wird wohl bestimmen, ob die Daten vom Start oder Ende geholt werden.
//Edit:
Oder auch nicht, du hast ja in dem Funktionsaufruf einen Aufruf an die action.php wo du einen Index übergibts. Da könntest du bestimmt auch etwas machen mit.
Und die wird wohl bestimmen, ob die Daten vom Start oder Ende geholt werden.
//Edit:
Oder auch nicht, du hast ja in dem Funktionsaufruf einen Aufruf an die action.php wo du einen Index übergibts. Da könntest du bestimmt auch etwas machen mit.
hab ich - schaue ich mir später dann an
Ein Array aus Objekten welches man anhand von einer Property der Objekte mit einem Datum sortieren möchte geht so
Online Demo
Damit sollte nun auch ein Laie selbst klarkommen ohne das man alles vorbeten muss.
Cheers and ciao briggs
// initialize array
let data = [];
// add some sample objects to array
data.push({
"treatment_date": "10.03.2023 09:00",
"id":1
});
data.push({
"treatment_date": "09.12.2023 09:00",
"id":2
});
data.push({
"treatment_date": "09.12.2023 08:00",
"id":3
});
// sort array by 'treatment_date' property of array objects
let data_sorted = data.sort((a,b) => {
var d1 = new Date(a.treatment_date.replace(/(\d{2})\.(\d{2})\.(\d{4}) (\d{2}:\d{2})/,'$3-$2-$1T$4'));
var d2 = new Date(b.treatment_date.replace(/(\d{2})\.(\d{2})\.(\d{4}) (\d{2}:\d{2})/,'$3-$2-$1T$4'));
if (d1 < d2){return -1}
if (d1 > d2){return 1}
return 0;
});
// reverse sort oder newest > oldest
data_sorted.reverse();
// output the latest 3 entries from sorted data to console
for(var i = 0;i < 3;i++){
console.log(data_sorted[i].treatment_date);
}
Damit sollte nun auch ein Laie selbst klarkommen ohne das man alles vorbeten muss.
Cheers and ciao briggs