简体   繁体   English

将 select 标签与 label 添加到 HTML 动态 jQuery

[英]Add select tag with label to HTML for dynamically jQuery

I am writing form in HTML and JQuery. I would like to add the forms fields dynamically, after the page is loaded.我正在 HTML 和 JQuery 中编写表单。我想在页面加载后动态添加 forms 字段。

I have this in HTML file:我在 HTML 文件中有这个:

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="index.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="index.js"></script>
</head>
<body>
    <div id="form-database-settings">
        <label for="database_section">Database Settings</label>
        <form id="database_section" class="form-settings">
        </form>
        </div>
</body>
</html>

and this in my JS file:这在我的 JS 文件中:

var dataset_options = [
    {
        text:"text1",
        value:"value1"
    },
    {
        text:"text2",
        value:"value1"
    }
];


window.onload = () => {
    createDatabaseSettingsForm();
}

function createDatabaseSettingsForm(){
    var formDatabaseSettings = $("#database_section")[0];
    var datasetSelect = create_select_button("Dataset", "dataset_selector", "query-form-class", dataset_options)
    formDatabaseSettings.appendChild(datasetSelect);
}

function create_select_button(label_value, select_id, select_class, options){
    var div = document.createElement("div");
    var label = document.createElement("label");
    label.setAttribute("for", select_id);
    label.setAttribute("value", label_value);
    div.appendChild(label);

    var select = document.createElement('select');
    select.setAttribute("id", select_id);
    select.setAttribute("class", select_class);

    for (var option_index in options){
        select.append($('<option value=${options[i].value}>${options[i].text}</option>'));
        // select.append($("<option value=3>this is a text</option>"));
    }

    div.appendChild(select);

    return div;
}

在此处输入图像描述

this is the output. I would like to have a label, and elements in the select element.这是 output。我想要一个 label,以及 select 元素中的元素。 What am I doing wrong?我究竟做错了什么?

Hope this help you.希望这对你有帮助。

 var dataset_options = [{ text: "text1", value: "value1" }, { text: "text2", value: "value1" } ]; window.onload = () => { createDatabaseSettingsForm(); } function createDatabaseSettingsForm() { var formDatabaseSettings = $("#database_section")[0]; var datasetSelect = create_select_button("Dataset", "dataset_selector", "query-form-class", dataset_options) formDatabaseSettings.appendChild(datasetSelect); } function create_select_button(label_value, select_id, select_class, options) { var div = document.createElement("div"); var label = document.createElement("label"); label.setAttribute("for", select_id); label.setAttribute("value", label_value); div.appendChild(label); var select = document.createElement('select'); select.setAttribute("id", select_id); select.setAttribute("class", select_class); for (var i in options) { console.log(options); var option = document.createElement("option"); option.text = options[i].text; option.value = options[i].value; select.append(option); // select.append($("<option value=3>this is a text</option>")); } div.appendChild(select); return div; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="form-database-settings"> <label for="database_section">Database Settings</label> <form id="database_section" class="form-settings"> </form> </div>

You can't mix jQuery and Vanilla JS because this is not easily readable and you are making a spaghetti code and this is not good practice.你不能混合使用 jQuery 和 Vanilla JS,因为这不容易阅读,而且你正在编写意大利面条代码,这不是好的做法。 I modified your code and I added example with VanillaJS and jQuery ( jquery also on codesandobx )我修改了您的代码,并添加了 VanillaJS 和 jQuery 示例(jquery 也在 codesandobx 上)

https://codesandbox.io/s/serene-mestorf-1wq9u https://codesandbox.io/s/serene-mestorf-1wq9u

VanillaJS香草JS

 const dataset_options = [ { text: "text1", value: "value1" }, { text: "text2", value: "value1" } ]; function createDatabaseSettingsForm() { const formDatabaseSettings = document.querySelector("#database_section"); console.log(formDatabaseSettings); const datasetSelect = createSelectButton( "Dataset", "dataset_selector", "query-form-class", dataset_options ); formDatabaseSettings.appendChild(datasetSelect); } function createSelectButton(label_value, select_id, select_class, options) { const div = document.createElement("div"); const label = document.createElement("label"); label.setAttribute("for", select_id); label.setAttribute("value", label_value); div.appendChild(label); const select = document.createElement("select"); select.setAttribute("id", select_id); select.setAttribute("class", select_class); for (const option in options) { const optionEl = document.createElement("option"); optionEl.setAttribute("value", options[option].value); optionEl.innerHTML = options[option].text; select.appendChild(optionEl); } div.appendChild(select); return div; } createDatabaseSettingsForm();
 <div id="form-database-settings"> <label for="database_section">Database Settings</label> <form id="database_section" class="form-settings"></form> </div>

jQuery jQuery

 const dataset_options = [ { text: "text1", value: "value1" }, { text: "text2", value: "value1" } ]; $(document).ready(() => { createDatabaseSettingsForm(); }); function createDatabaseSettingsForm() { const formDatabaseSettings = $("#database_section"); const datasetSelect = createSelectButton( "Dataset", "dataset_selector", "query-form-class", dataset_options ); formDatabaseSettings.append(datasetSelect); } function createSelectButton(label_value, select_id, select_class, options) { const div = $("<div/>"); const label = $("<label/>"); label.attr("for", select_id); label.attr("value", label_value); div.append(label); const select = $("<select />"); select.attr("id", select_id); select.attr("class", select_class); for (const option in options) { select.append( $( `<option value=${options[option].value}>${ options[option].text }</option>` ) ); } div.append(select); return div; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="form-database-settings"> <label for="database_section">Database Settings</label> <form id="database_section" class="form-settings"></form> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM