javascript - 在函数中使用 Input 的值

标签 javascript reactjs firebase

写这个话题有点惭愧,因为即使我得到了一个 HTML 格式(4 年前)我也无法解决我的问题:

我不能在函数中使用输入类型文本的值,这是我的代码:

import React from 'react'
//import db from '../../constants/FirebaseConfig'

class Account extends React.Component {

    state = {
        name: '',
        content: ''
    }

    _formSubmit(e) {
        e.preventDefault()
        var name = document.getElementsByName('name')
        console.log(name)
        
    }

    render(){
        return(
            <div className="container">
                <br></br>
                <h3 className="title">Account</h3>
                <form id="form">
                    <br></br>
                    <label>Titre</label>
                    <input type="text" name="name" placeholder="Ici le nom de l'Article"/>
                    <br></br><br></br>
                    <label>Contenue</label>
                    <input type="text" name="content" placeholder="Ici le contenue de l'article"/>
                    <br></br><br></br>
                    <input type="button" value="suivant" onClick={(e) =>this._formSubmit(e)}/>
                    <br></br>
                </form>
            </div>
        )
    }
}

export default Account

尝试调试几次后,我认为问题出在 var name 上。 NodeList<input> 对象类型。 我的目标是将“名称”和“内容”值存储在 firebase 数据库中。

谢谢

最佳答案

两件事:

getElementsByName 是复数——注意“元素”中的“s”。所以它不仅返回一个元素,它还返回一个列表,即使只有一个。

由于您使用的是 React,因此您根本不需要以这种方式提取输入值。相反,在输入本身上,只需添加 valueonChange 属性,然后跟踪输入的值作为状态。

您所在的州已经为他们准备了位置,所以请继续使用它。您将在他们键入时实时跟踪它,而不仅仅是在提交表单时。

class Account extends React.Component {

    state = {
        name: '',
        content: ''
    }

    _formSubmit(e) {
        //just process your form _submission_ here           
    }

    onChangeName = (e) => {
        this.setState({
           name: e.target.value
        });
    }

    render(){
        return(
            <div className="container">
                <br></br>
                <h3 className="title">Account</h3>
                <form id="form">
                    <br></br>
                    <label>Titre</label>
                    <input type="text" name="name" placeholder="Ici le nom de l'Article" value={this.state.name} onChange={this.onChangeName} />

关于javascript - 在函数中使用 Input 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60225243/

相关文章:

android - 如何在同一项目中添加两个 google-services.json 文件

javascript - 添加新元素后不触发事件

javascript - 如何使用 d3.js 沿着弧内的 textPath 居中(水平和垂直)文本?

javascript - 如何使用 Redux 存储中的数据渲染 React 组件

javascript - 即使 pure 总是更快,我什么时候应该使用 React 无状态组件?

javascript - 切换选项不能正确使用 useState

android - Gradle 无法解析未请求的版本

Angular/Firestore - 操作 AngularFirestoreDocument

javascript - 使用 JQuery 改变颜色

javascript - 根据悬停图像播放特定音频(javascript)