【问题标题】:How to set the "value" and "for" attribute using Object.assign如何使用 Object.assign 设置“value”和“for”属性
【发布时间】:2022-01-16 20:02:35
【问题描述】:

如何使用Object.assign() 设置元素的值?除了"value" 用于<input>"for" 用于<label> 之外,所有其他属性似乎都出现了。代码如下:

window.onload = function createForm () {

    // Form header >>>>
    const formHeaderText = document.createTextNode("Form");
    headerEl.appendChild(formHeaderText);
    container.appendChild(headerEl);

    // Form element >>>
    Object.assign(formEl, {
        name: "inputForm",
        id: "myForm"
    });
   container.appendChild(formEl);

    // Name Label >>>
    const nameLabelText = document.createTextNode("Name");
    labelElName.appendChild(nameLabelText);
    Object.assign(labelElName, {
        for: "iname",
    });
    formEl.appendChild(labelElName);

    // Name Input element >>>
    formEl.appendChild(inputElName);
    Object.assign(inputElName, {
        className: "inputs",
        id: "iname",
        name: "name",
        type: "text",
        placeholder: "Name",
        value: ""
    })

我得到的是:

<input class="inputs" id="iname" name="name" type="text" placeholder="Name">

对于输入和:

<label>Name</label>

用于标签元素。

【问题讨论】:

  • 你好像从来没有定义过labelElName..?
  • 还有formEl 定义在哪里?这是什么?
  • 它们都保存在常量中但我无法提交所有代码...抱歉
  • 这是一些未提交的代码:const container = document.getElementsByClassName("container")[0] const headerEl = document.createElement("h1"); const formEl = document.createElement("form"); const labelElName = document.createElement("label"); const labelElGender = document.createElement("label"); const labelElAge = document.createElement("label"); const inputElName = document.createElement("input"); const inputElGender = document.createElement("input"); const inputElAge = document.createElement("input");

标签: javascript object dom attributes


【解决方案1】:

由于for 是JavaScript 中的保留关键字,因此您需要在label 元素上使用htmlFor 属性,如下所示:

Object.assign(labelElName, {htmlFor: "iname"});

labelElName.htmlFor = "iname";

【讨论】:

  • 谢谢,这适用于for 属性。
  • @Co.tibi 输入值,尝试使用defaultValue 属性。
  • 行得通,谢谢
  • @Co.tibi 不客气。我希望将答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多