javascript - 如何使用内部文本作为对象键
问题描述
我的一些代码有问题。我将对象的键设置为 ID 的值,但我需要它作为标签的文本。
function formObj(elems) {
let form = {};
let label = document.querySelectorAll('label')
for(let elem of elems) {
let key = elem.label.innerText;
let val = elem.value;
if(key && val)
form[key] = key ==="age" ? Number(val) : val;
}
console.log(form)
return form;
}
<form>
<label for='name'>name</label>
<input type='text' id='name' value="Harry"/>
<label for='email'>email</label>
<input type='email' id='email' value="harry@gmail.com"/>
<label for='age'>age</label>
<input type='text' id='age' value="22"/>
<form/>
我不确定如何使用.innerHTML
来完成此操作。
请帮忙
解决方案
您可以使用获取标签的文本,document.querySelector
并innerText
获取对应的标签,使用它而不是elem.id
let form = {};
let label = document.querySelectorAll('label');
let elements = document.querySelectorAll('form *')
const formObj = elems => {
for (let elem of elems) {
if (!elem.id) continue;
let key = document.querySelector('label[for="' + elem.id + '"]').innerText;
let val = elem.value;
if (key && val)
form[key] = key === "age" ? Number(val) : val;
}
console.log(form)
return form;
}
formObj(elements);
<form>
<label for='name'>nameA</label>
<input type='text' id='name' value="Harry" />
<label for='email'>emailB</label>
<input type='email' id='email' value="harry@gmail.com" />
<label for='age'>ageC</label>
<input type='text' id='age' value="22" />
<form/>
推荐阅读
- wpf - 滚动条在 UserControl 的嵌套网格中无法正常工作
- php - 如何将 html 文本发送到电报频道?
- oracle - 如何在 oracle apex 中创建自定义身份验证
- javascript - 用于动态字段的 Javascript 多重分组
- python - Django REST Framework Viewset 返回 404(GET 请求)
- docker - 如何从其哈希中找出 Docker 镜像层是什么?
- javascript - 如何从 Google 表格中的元素更新表单?
- flutter - 如何对文本进行排序,使其喜欢左侧的第一行(“abcd”),右侧的(“$ 1000”),而(“prod amount”)在它的下一行?(扑)
- python - Python 3.8.2| 为什么我有一个:TypeError: cannot unpack non-iterable NoneType object?
- javascript - 问剑道ui,如何使用ajax从另一个页面调用数据?