0

Datos()将转换为 HTML 对象的信息加载到一个 HTML 文件中,其中class每个都已定义。我需要 save() 读取生成的 s 的值,input但是当我尝试使用document.querySelector()它们的类来查找它们时,它显然会返回null并给我这个错误:

infoPersonal.js:67 未捕获的类型错误:无法在 HTMLSpanElement 处读取 null 的属性“值”。(infoPersonal.js:67)

难道我做错了什么?

(我会添加一个片段代码,但由于一些导入它不起作用,我希望 javascript 代码就足够了)

const datos = () => {
  const token = localStorage.getItem('token')
  if (token) {
    return fetch('https://janfa.gharsnull.now.sh/api/auth/me', {
        method: 'GET',
        headers: {
          'Content-Type': 'application/json',
          authorization: token,
        },
      })
      .then(x => x.json())
      .then(user => {
          const datalist = document.querySelectorAll(".data")
          datalist.forEach(function(el) {
              var divInfo = document.createElement("div")
              divInfo.setAttribute("class", `divInfo-${el.getAttribute("data-target")}`)
              var divInput = document.createElement("div")
              divInput.setAttribute("class", `divInput-${el.getAttribute("data-target")}`)
              divInput.hidden = true
              var input
              var icon

              const template = '<p>' + user[el.getAttribute("data-target")] + '</p>'

              input = document.createElement("input")
              input.type = "text"
              input.setAttribute("class", `input-${el.getAttribute("data-target")}`)
              input.value = user[el.getAttribute("data-target")]

              icon = document.createElement("span")
              icon.setAttribute("class", "flaticon-diskette")
              icon.setAttribute("data-target", `${el.getAttribute("data-target")}`)
              divInfo.innerHTML = template
              divInput.appendChild(input)
              divInput.appendChild(icon)
              el.appendChild(divInfo)
              el.appendChild(divInput)
            }
          })
      }).then(() => {
    save()
  })
}
}

const save = () => {
  const saves = document.querySelectorAll(".flaticon-diskette")
  saves.forEach(function(save) {
    const input = document.querySelector(`.input-${save.getAttribute("data-target")}`)
    save.addEventListener('click', () => {
      console.log(input.value)
    })
  })
}
4

1 回答 1

1

这是更正的脚本,祝你有美好的一天!

const datos= () => {
    const token = localStorage.getItem('token')
    if (token) {
        return fetch('https://janfa.gharsnull.now.sh/api/auth/me', {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                authorization : token,
            },
        })
        .then( x => x.json())
        .then( user =>{
            const datalist = document.querySelectorAll(".data")
            datalist.forEach( function(el){
                var divInfo= document.createElement("div")
                divInfo.setAttribute("class", `divInfo-${el.getAttribute("data-target")}`)
                var divInput = document.createElement("div")
                divInput.setAttribute("class", `divInput-${el.getAttribute("data-target")}`)
                divInput.hidden= true
                var input
                var icon

                const template = '<p>' + user[el.getAttribute("data-target")] + '</p>'

                input = document.createElement("input")
                input.type = "text"
                input.setAttribute("class" , `input-${el.getAttribute("data-target")}`)
                input.value = user[el.getAttribute("data-target")]

                icon = document.createElement("span")
                icon.setAttribute("class", "flaticon-diskette")
                icon.setAttribute("data-target", `${el.getAttribute("data-target")}`)
                divInfo.innerHTML = template
                divInput.appendChild(input)
                divInput.appendChild(icon)
                el.appendChild(divInfo)
                el.appendChild(divInput)
                }
            })
        }).then (() =>{
            save()
        })
    }
} 

const save = () =>{
    const saves= document.querySelectorAll(".flaticon-diskette")
    saves.forEach(function(save){
        const input = document.querySelector(`.input-${save.getAttribute("data-target")}`)
        save.addEventListener('click', () =>{
            console.log(input.value)
        })
    })
}

于 2020-05-21T15:30:57.083 回答