Javascript 如何将jquery中的数据放入每个对象变量中

Javascript 如何将jquery中的数据放入每个对象变量中,javascript,jquery,Javascript,Jquery,我有几个select标记,它们的name属性值不同。我必须得到每个值并将其放入对象变量中。怎么做? 我的代码: var obj={}; $'.variants tbody tr td.value'.children'select'.eachfunctionindex,value{ 警报$this.attr'name'; }; 1. 1. 2. 3. 2. 4. 5. 6. 3. 7. 8. 9 您应该选择表中的所有select元素,而不需要如此复杂的jQuery查询来实现,因此,可以遍历集合;

我有几个select标记,它们的name属性值不同。我必须得到每个值并将其放入对象变量中。怎么做? 我的代码:

var obj={}; $'.variants tbody tr td.value'.children'select'.eachfunctionindex,value{ 警报$this.attr'name'; }; 1. 1. 2. 3. 2. 4. 5. 6. 3. 7. 8. 9 您应该选择表中的所有select元素,而不需要如此复杂的jQuery查询来实现,因此,可以遍历集合;然后,对于集合的每个元素,使用attr函数获取其名称,使用val函数获取选定值,并使用select的名称在输出对象obj上创建属性,并将其值指定给select值

您也可以像在其他答案示例中一样,使用vanilla JavaScript执行相同的操作。

输出:

{"color":"1","size":"4","material":"7"}
您可以在这里尝试:

常量obj={}; $'table.variants td.value select'.eachfunctionindex{ obj[$this.attrname]=$this.val; }; $output.textJSON.stringifyobj; 1. 1. 2. 3. 2. 4. 5. 6. 3. 7. 8. 9
您可以使用forEach循环遍历选择输入并填充obj对象:

选择输入框并在阵列中展开它们:

[...document.querySelectorAll('.value')]
在循环中,使用以下选项选择子选择元素:

menu.querySelector('select')
然后在obj中添加一个新的键/值对:

因此,完整代码如下所示:

const obj = {}

document.querySelector('.button').addEventListener('click', (e) => {

  [...document.querySelectorAll('.value')].forEach(menu => {

    const element = menu.querySelector('select');

    obj[element.getAttribute('name')] = element.value

  })

  console.log(obj)

})
我设置了一个事件侦听器来显示它的工作情况:

常量obj={} document.querySelector'.button'.addEventListener'click',e=>{ […document.querySelectorAll'.value'].forEachmenu=>{ 常量元素=menu.querySelector'select'; obj[element.getAttribute'name']=element.value } console.logobj } 1. 1. 2. 3. 2. 4. 5. 6. 3. 7. 8. 9
给object你不需要jQuery来做这件事,这将在页面加载时返回一个对象。您必须将其包装在一个函数中,并添加一个事件侦听器,以便在select值发生更改时或在表单提交时返回一个对象(如果您正试图实现这一点的话)

const variantsTable = document.querySelector('.variants')
const variantsSelects = Array.from(variantsTable.querySelectorAll('select'))

const obj = {}

variantsSelects.forEach(item => {
    obj[item.name] = item.value
})

console.log(obj)

@伊万希望我的编辑符合你的解释期望。你介意解释一下你为什么投了否决票吗?有什么建议可以改进我的答案吗?我没有否决你的答案,但可能是因为你需要一个像巴贝尔这样的传送器才能在某些浏览器中工作。也许es5 vanilla js将是落选者的正确选择。在其他一些问题上投了反对票,只是为了补充es6的操作方法,所以…:-
const obj = {}

document.querySelector('.button').addEventListener('click', (e) => {

  [...document.querySelectorAll('.value')].forEach(menu => {

    const element = menu.querySelector('select');

    obj[element.getAttribute('name')] = element.value

  })

  console.log(obj)

})
const variantsTable = document.querySelector('.variants')
const variantsSelects = Array.from(variantsTable.querySelectorAll('select'))

const obj = {}

variantsSelects.forEach(item => {
    obj[item.name] = item.value
})

console.log(obj)