Чтобы понять вашу проблему, вам понадобится информация о том, как это делается.
В вашем коде работают две разные стороны. Сценарий на стороне сервера и javascript на стороне клиента. Сначала выполняется сценарий, затем результат отправляется в браузер для выполнения javascript.
стороне сервера
Первое, что нужно понять, что скриптлета не выполнит Javascript код. JSP будет в основном добавлять текст в файл.
В вашем случае, ваш цикл будет вставить
<script>
drawFreeSlot();
</script>
Для каждого ParkingSlot с номером телефона на 0. (и приращение переменной).
Он также будет вставить значение переменной в функцию
<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>
Значения будут зависеть от положения этого кода, если это после цикла, то есть номер слота, если не, это будет 0. Он не использует переменную, просто вставьте значение в виде текста.
стороне клиента
Когда это будет сделано, то страница будет отправлена в браузер клиента и получить страницу HTML с блоком тех сценариев.
Браузер прочитает файл, чтобы показать результат. Это когда выполняется Javascript. Поэтому для каждого найденного блока drawFreeSlot()
он выполнит эту функцию, но функция только имеет значение переменной insert во время, вот где ваша проблема.
Решение
Как Nnnnnn предполагают, что это, проходя через параметр будет решить эту проблему.
<script>drawFreeSlot(<%=++slotCount%>);</script>
HTML-страница будет выглядеть следующим образом:
...
<script>
drawFreeSlot(1);
</script>
...
<script>
drawFreeSlot(2);
</script>
...
<script>
drawFreeSlot(3);
</script>
...
Простое изменение функции для работы с этим параметром является потребность и ваш код будет работать.
Поскольку на каждом цикле вы печатаете значение в это время вашей переменной.
Вы должны подумать о том, как визуализируется код JSP. Если вы просмотрите источник страницы в своем браузере, вы, вероятно, увидите, что происходит: предполагается, что 'drawFreeSlot()' определяется один раз, он будет иметь 'var slotNo', установленный в значение' <% = slotCount%> ', он не будет волшебным образом обновляться только потому, что у вас есть цикл JSP, выводящий несколько вызовов на 'drawFreeSlot()'. – nnnnnn
Когда цикл итерации, переменная slotCount принимает новые значения, то в моем javascript-коде я могу получить доступ к этому значению только вправо> – user6654733
, вы правы nnnnnn, но мой slotCount всегда 0 .. вы можете сказать мне? – user6654733