javascript - 将以下jQuery代码转换为纯Javascript

标签 javascript jquery

如何将以下注释行转换为纯JS?

$(document).ready(function() {
$("#add").click(function() {
        var lastField = $("#buildyourform div:last");
    var intId = (lastField && lastField.length && lastField.data("idx") + 1) || 1;
    var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/>");
    fieldWrapper.data("idx", intId);
    var fName = $("<input type=\"text\" class=\"fieldname\" />");
    var fType = $("<select class=\"fieldtype\"><option value=\"checkbox\">Checked</option><option value=\"textbox\">Text</option><option value=\"textarea\">Paragraph</option></select>");
    var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");
    removeButton.click(function() {
        $(this).parent().remove();
    });
    fieldWrapper.append(fName);
    fieldWrapper.append(fType);
    fieldWrapper.append(removeButton);
    $("#buildyourform").append(fieldWrapper);
});


fiddle link

最佳答案

将jquery代码转换为js非常简单。除了这种情况,因为我真的没有地方可以测试它是否正常工作。

这是一个粗略的翻译,很有可能不起作用。请尽力解决这些错误。

document.addEventListener("DOMContentLoaded", function(event) {
  $.querySelector("#add").addEventListener("click", () => {
    var lastField = document.querySelector("#buildyourform").lastElementChild;
    var intId =
      (lastField && lastField.length && lastField.data("idx") + 1) || 1;
    var fieldWrapper = createElementFromHTML(
      '<div class="fieldwrapper" id="field' + intId + '"/>'
    );
    fieldWrapper.data("idx", intId);
    var fName = createElementFromHTML(
      '<input type="text" class="fieldname" />'
    );
    var fType = createElementFromHTML(
      '<select class="fieldtype"><option value="checkbox">Checked</option><option value="textbox">Text</option><option value="textarea">Paragraph</option></select>'
    );
    var removeButton = createElementFromHTML(
      '<input type="button" class="remove" value="-" />'
    );
    removeButton.onclick(e => {
      e.parentNode.removeChild(e.parentNode.parentNode); // You might have to play around with this one specifically
    });
    fieldWrapper.appendChild(fName);
    fieldWrapper.appendChild(fType);
    fieldWrapper.appendChild(removeButton);
    document.querySelector("#buildyourform").appendChild(fieldWrapper);
  });
});

function createElementFromHTML(htmlString) {
  var div = document.createElement("div");
  div.innerHTML = htmlString.trim();

  // Change this to div.childNodes to support multiple top-level nodes
  return div.firstChild;
}

关于javascript - 将以下jQuery代码转换为纯Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60620477/

相关文章:

javascript - 使用 JavaScript 验证未知数量的文本字段

javascript - Jquery 在后台 ajax 加载后监听输入字段的变化

jquery - 将ajax响应数组存储到变量中以供以后使用

javascript - 如何将动态创建的对象插入到另一个对象中

javascript - jQuery 和 OpenLayers 之间的事件监听器冲突

c# - MVC Controller 方法参数始终为空

javascript - 解析 AJAX HTML 响应 : I can find the elements but not access their innerHTML or values?

javascript - Backbone.js 中的文本区域事件

javascript - 选择框的 html 选项的动态设置不会出现在 select html 中

javascript - for 语句保留第一个空值