Javascript 访问每个()中div内的输入值

Javascript 访问每个()中div内的输入值,javascript,jquery,html,each,Javascript,Jquery,Html,Each,我有一段代码,允许用户将一部新手机添加到如下列表中 const addPhone = async (phone) => { $('.phone-list').append(` <div class='phone-div'> <table"> <tbody> <tr> <td"> <p> <input class

我有一段代码,允许用户将一部新手机添加到如下列表中

const addPhone = async (phone) => {
  $('.phone-list').append(`
  <div class='phone-div'>
    <table">
    <tbody>
      <tr>
        <td">
            <p>
              <input class='type' type='text' value='${phone.type}'></input>
            </p>
            <p>
              <input class='detail' type='text' value='${phone.detail}'></input>
            </p>
        </td>
      </tr>
    </tbody>
  </table>
</div>);
};
我怎样才能让它把类型和细节放在一个obj中,然后把它放入一个数组中,然后像这样发送给服务器

phoneArray.push({
    type: $(this).find('.type').val(),
    detail: $(this).find('.detail').val(),
})
您正在
.each()
使用arrow函数绑定元素,该函数没有自己对
this
关键字的绑定。考虑将其替换为正常函数。

$(document).on('click', '#submit', async () => {
  const phoneArray = [];

//—————————————————————vvvvvvvv——      
  $('.phone-div').each(function() {
    console.log($(this).find('.type'));
    console.log($(this).find('.detail'));
  });
});

我不知道你想用什么。“正常”功能完全可以完成这项工作

并修复了
.append()
中的几个打字错误

功能添加电话(电话){
$('.phone list')。附加(`

`); } $(文档)。在('单击','提交',函数()上){ 常量phoneArray=[]; $('.phone div')。每个(功能(i){ console.log($(this.find('.type').val()); log($(this.find('.detail').val()); phoneArray.push({ 类型:$(this.find('.type').val(), 详细信息:$(this.find('.detail').val(), }) }); log(phoneArray); }); $(“#添加”)。在(“单击”,函数(){ //只是为了演示…因为我不知道这个物体来自哪里。。。 var电话={类型:“手机”,详细信息:“1-888-555-5555”} addPhone(电话); });

添加

提交
可能是因为您使用的是箭头函数,
未引用元素

将箭头函数更改为use
function
关键字,或使用回调的第二个参数在上下文中获取当前的
元素

$(document).on('click', '#submit', async () => {
    const phoneArray = [];
    $('.phone-div').each((index, element) => {
        phoneArray.push({
           type: $(element).find('.type').val(),
           detail: $(element).find('.detail').val(),
         })
    });
});

如果您使用
console.log($(this))
而不是
console.log($(this).find('.type')),则会记录什么?另外,执行
$(“#提交”)可能会更有效。在('click')
上,而不是
$(文档)。在('click',“#提交”)
上,html中有4个错误:要删除两个错误,您仍然可以推送到
常量
数组并更改
常量
变量对象的属性。只有重新分配是不允许的<代码>常数a=[];a、 按下按钮(10)
有效<代码>常量a={};a、 newProp=10
也是有效且有趣的。。。我不知道……;)
$(此)
循环中。each()
循环引用每个迭代的元素。当您使用箭头函数作为回调时,不是这样吗?@louyspatricebesette为什么要删除您的答案?这也是有效的,您已经创建了一个代码段
$(document).on('click', '#submit', async () => {
    const phoneArray = [];
    $('.phone-div').each((index, element) => {
        phoneArray.push({
           type: $(element).find('.type').val(),
           detail: $(element).find('.detail').val(),
         })
    });
});