Преобразуйте следующий jQuery код в чистый Javascript - PullRequest
1 голос
/ 10 марта 2020

Как мне преобразовать следующие закомментированные строки в чистые 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);
});

скриптовая ссылка

1 Ответ

0 голосов
/ 10 марта 2020

Перевод 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;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...