Um Ihr Problem zu verstehen, benötigen Sie einige Informationen über die Art und Weise, wie dies gemacht wird.
Sie arbeiten mit zwei verschiedenen Seiten in Ihrem Code. Das Scriplet auf der Serverseite und das Javascript auf der Client-Seite, Zuerst wird das Skript ausgeführt, dann wird das Ergebnis an den Browser gesendet, um das Javascript auszuführen.
Server-Seite
Das erste, was ist zu verstehen, dass die Scriplet nicht Javascript-Code auszuführen. Die JSP wird grundsätzlich etwas Text in die Datei einfügen.
In Ihrem Fall wird die Schleife einzufügen
<script>
drawFreeSlot();
</script>
Für jede ParkingSlot mit einer Telefonnummer auf 0 gesetzt (und inkrementiert die Variable).
Es wird auch die Variablenwert in die Funktion
<script language="javascript">
function drawFreeSlot(){
var div = document.createElement('div');
var slotNo = <%=slotCount%>;
div.className = 'col-1';
//div.appendChild("Slot"+slotNo);
div.style.backgroundColor = 'lightgreen';
document.getElementById('content').appendChild(div);
</script>
Die Werte auf der Position dieses Codes hängt einsetzen, wenn dies nach der Schleife ist, werden Sie die Anzahl der Slot haben, wenn nicht, es wird 0 sein. Es benutzt die Variable nicht, sondern fügt den Wert als Text ein.
Client-Seite
Wenn dies geschehen ist, wird die Seite an den Client-Browser gesendet werden und eine HTML-Seite mit einem derjenigediejenigedasjenige Skriptblock erhalten.
Der Browser liest die Datei, um das Ergebnis anzuzeigen. Dies ist, wenn das Javascript ausgeführt wird. Also für jeden drawFreeSlot()
Block gefunden, wird er die Funktion ausführen, aber die Funktion nur den Wert der Variablen einfügen zu der Zeit, das ist, wo ist dein Problem.
Lösung
Als Nnnnnn vorschlagen es wird das Problem beheben mit einem Parameter.
<script>drawFreeSlot(<%=++slotCount%>);</script>
Die HTML-Seite wird wie folgt aussehen:
...
<script>
drawFreeSlot(1);
</script>
...
<script>
drawFreeSlot(2);
</script>
...
<script>
drawFreeSlot(3);
</script>
...
Nur eine einfache Änderung in der Funktion mit diesem Parameter zu arbeiten, ist notwendig und Ihr Code wird funktionieren.
Da in jeder Schleife, drucken Sie den Wert zu dieser Zeit Ihrer Variablen.
Sie müssen darüber nachdenken, wie der JSP-Code gerendert wird. Wenn Sie die Seitenquelle in Ihrem Browser anzeigen, werden Sie wahrscheinlich sehen, was passiert: Wenn 'drawFreeSlot()' einmal definiert ist, wird 'var slotNo' auf den Wert '<% = slotCount%>' gesetzt. Es wird nicht magisch aktualisiert, nur weil Sie eine JSP-Schleife haben, die mehrere Aufrufe von 'drawFreeSlot()' ausgibt. – nnnnnn
Wenn die Schleife iteriert, nimmt die slotCount-Variable neue Werte an, dann kann ich in meinem JavaScript-Code nur auf diesen Wert zugreifen> – user6654733
Sie haben Recht nnnnnn, aber mein slotCount ist immer 0..können Sie mir y sagen? – user6654733