Этот вопрос связан с [этим] [1] вопросом. Я пытаюсь создать динамически генерируемые параметры для поля выбора, используя элементы массива. тем временем я хочу, чтобы все элементы массива отображались как опция в поле выбора. а также я хочу использовать все эти элементы на другой странице JSP. Я действительно понятия не имею, как сделать это возможным.
В программе «var jsArray []», которая представляет собой массив JavaScript, этот массив содержит все значения, которые я хочу отображать в качестве опции в поле выбора. Я пробовал некоторый код, но он не работает должным образом. Для простоты я буду публиковать здесь только необходимый код.
var difference_ms = 3;
var jsArray =[];
<%
for (int i = 0; i < ar.size(); i++) {
%>
// putting value in jsArray i.e at jsArray[0]=first element ..so on
jsArray[<%= i %>] = "<%= ar.get(i) %>";
<% } %>
var select = "";
for (var i = 0; i < difference_ms; i++)
{
$('<div class = "align" id = "' + i + '">'+select+'<input class = "space2
size"type = "text" id = "amit' + i + '"><span><select><option value = "FULL DAY">
FULL DAY</option><option value = "HALF DAY">HALF DAY</option></select></div>
<br><br>').appendTo('#container');
}
<div id = "container"></div>
---------Process.jsp----------------------------------------
<%
String s = request.getParameter("val");
String user_mail = request.getParameter("user_mail");
ArrayList<String> ar = new ArrayList<>();
String array_value_ar = "";
String temp = "";
if (s==null || s.trim().equals(""))
{
// out.print("Please enter id");
}
else
{
//int id=Integer.parseInt(emp);
// out.println(id);
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/registerdb", "root", "");
PreparedStatement ps_leave = con.prepareStatement("select leave_Name from orgleave");
ResultSet rs_leave = ps_leave.executeQuery();
while(rs_leave.next())
{
array_value_ar = rs_leave.getString("leave_name");
ar.add(array_value_ar);
}
for(int i=0;i<ar.size();i++)
{
temp = (ar.get(i)).toString();
if (s.equals(temp))
{
PreparedStatement ps = con.prepareStatement("select balance_leave from user_assign_leave where user_email=?");
ps.setString(1,user_mail);
ResultSet rs = ps.executeQuery();
if (rs.next())
{
out.print(rs.getString("balance_leave"));
}
}
}
/* else if (s.equals("TYPE B"))
{
PreparedStatement ps1 = con.prepareStatement("select rem_type_b from request where emp_id=?");
ps1.setString(1,user_mail);
ResultSet rs1 = ps1.executeQuery();
if (rs1.next())
{
out.print(rs1.getDouble("rem_type_b"));
}
}
else if (s.equals("TYPE C"))
{
PreparedStatement ps2 = con.prepareStatement("select rem_type_c from request where emp_id=?");
ps2.setString(1,user_mail);
ResultSet rs2 = ps2.executeQuery();
if (rs2.next())
{
out.print(rs2.getDouble("rem_type_c"));
}
} */
con.close();
}
catch(Exception e){e.printStackTrace();}
}
%>
[1]: https://stackoverflow.com/questions/55918875/how-print-record-from-database-when-user-select-options-from-dropdown-menu-dyna/55921444#55921444
Вы не можете напрямую использовать for-loop
внутри своего append
, попробуйте сохранить свою строку select
в каком-нибудь variable
и append
там, как, например, попробуйте код ниже, также я не тестировал этот код, он может иметь некоторую синтаксическую ошибку:
var difference_ms = 3;
//declare empty array
var jsArray =[];
<%
for (int i = 0; i < ar.size(); i++) {
% >
// putting value in jsArray i.e at jsArray[0]=first element ..so on
jsArray[<%= i %>] = "<%= columns.get(i) %>";
<% } %>
var select = "";
//looping through value and adding it in select box in var select as you cannot used for loop inside your append so storing value here
for(var j = 0; j < jsArray.length; j++) {
select += '<select class = "space" onchange = "sendInfo(this.value,' + i + ');"><option>SELECT</option><option value = "'+ jsArray[j]+'">"'+jsArray[j]+'"</option></select>';
}
// putting select value in your append
for (var i = 0; i < difference_ms; i++) {
$('<div class = "align" id = "' + i + '">'+select+'
<input class = "space2 size"type = "text" id = "amit' + i + '">
<span><select><option value = "FULL DAY">FULL DAY</option>
<option value = "HALF DAY">HALF DAY</option></select></div><br>
<br>').appendTo('#container');
}
<div id = "container"></div>
Редактировать: Попробуйте, как показано ниже:
select='<select class = "space" onchange = "sendInfo(this.value,' + i + ');"><option>SELECT</option>';
for(var j = 0; j < jsArray.length; j++) {
//appending new option in selectbox
select += '<option value = "'+ jsArray[j]+'">"'+jsArray[j]+'"</option>';
}
select+= '</select>';
Комментарии не для расширенного обсуждения; этот разговор был перешел в чат.
@Swati First -> нажмите кнопку, расположенную в правом углу экрана [кнопка обмена стеком]. затем, во-вторых, в этом разделе текущего сообщества вы можете увидеть их кнопку чата, нажмите на нее. затем посмотрите в правый нижний угол, там вы увидите кнопку «скрыть замороженные комнаты». так что левая сторона кнопки «создать комнату» нажмите на эту кнопку, и таким образом вы можете создать комнату. я не вижу эту кнопку из-за менее чем 50 репутации моего профиля. но вы увидите эту кнопку. :)
@Swati, вы не можете перемещать комментарии в комнату, если репутация любого участника меньше 20.
@Swati, ты можешь снова присоединиться к комнате! Я обновил свой код в соответствии с нашим обсуждением.
я могу опубликовать весь код, если кто-то хочет или заинтересован пройти через него.!!