You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何在selected函数内获取点击Div的文本内容?

获取React点击Div的文本内容

问题代码

const questions = (props) => {
  const { question, options, id } = props.quiz;

  const selected = (e) => {
    e.target.children[0].checked = true;
    console.log(e.target);
  };

  return (
    <div className="bg-gray-200 p-6 m-10 rounded-md">
      <div className="font-bold text-xl text-slate-600">{question}</div>
      <div className="grid grid-cols-2 mt-4">
        {options.map((option) => (
          <div className="border-2 border-solid border-gray-400 rounded  text-gray-500 m-1">
            <div className="flex cursor-pointer p-3" id={id} onClick={selected}>
              <input type="radio" className="mr-2" name="name" />
              {option}
            </div>
          </div>
        ))}
      </div>
    </div>
  );
};

export default questions;

问题描述

当在selected函数中执行console.log(e.target)时,返回的是被点击的Div,请问如何在该selected函数内获取该Div的文本内容?


解决方法

  • 方法一:直接读取DOM文本属性
    利用textContent或innerText获取文本,再用trim()去除多余空白:

    const selected = (e) => {
      e.target.children[0].checked = true;
      // 使用textContent获取所有文本
      const optionText = e.target.textContent.trim();
      // 或者用innerText获取可见文本
      // const optionText = e.target.innerText.trim();
      console.log(optionText);
    };
    
  • 方法二:直接传递渲染时的option数据(推荐)
    这更符合React数据驱动的理念,避免直接操作DOM:

    // 修改渲染时的onClick,传入当前option
    {options.map((option) => (
      <div className="border-2 border-solid border-gray-400 rounded  text-gray-500 m-1">
        <div className="flex cursor-pointer p-3" id={id} onClick={() => selected(option)}>
          <input type="radio" className="mr-2" name="name" />
          {option}
        </div>
      </div>
    ))}
    
    // 改写selected函数
    const selected = (optionText) => {
      console.log(optionText);
      // 注:单选框选中逻辑更建议用React状态管理,比如useState存储选中值,而非直接操作DOM
    };
    

内容的提问来源于stack exchange,提问作者Tanvir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:30:52