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

点击按钮后控制台输出undefined而非输入值,原因是什么?

问题分析:点击按钮后控制台输出undefined的原因

你尝试获取输入框内容,但点击按钮后控制台输出undefined,相关代码如下:

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="movie-search-engine.css">
    <script src="scripts/movie-search-engine.js" defer></script>
    <title>Movie Search Engine</title>
</head>
<body>
    <div class="searchBox">
        <input type="text" class="searchBox" placeholder="Movie Name">
        <button onclick="moviesearchEngine()" class="searchBoxID" >Search</button>
    </div>
    <div class="movieDetails">
        <h2 class="movieTitle">Movie Title</h2>
        
        <div class="movieData">
            <p class="yearofRelease">Year of Release</p>
            <p class="movieTitle">Movie Title</p>
            <p class="genre">Genre</p>
            <p class="director">Director</p>
            <p class="plot">Plot</p>
        </div>
</body>
</html>

JS代码

const moviesearchEngine=()=>{
    let searchBox = document.querySelector('.searchBox');
    console.log(searchBox.value)
}

核心原因

你的代码中,父容器<div class="searchBox">和输入框<input class="searchBox">共用了searchBox这个类名。document.querySelector('.searchBox')的特性是返回页面中第一个匹配该选择器的DOM元素,所以这里拿到的是外层的div容器,而div元素并没有value属性,因此控制台输出undefined。


解决方案

方案1:给输入框设置唯一类名

修改HTML中输入框的类名,避免和父容器重复:

<input type="text" class="searchInput" placeholder="Movie Name">

对应JS修改选择器:

const moviesearchEngine=()=>{
    let searchBox = document.querySelector('.searchInput');
    console.log(searchBox.value)
}

方案2:精确选择输入框

通过父容器定位到内部的输入框,不用修改类名:

const moviesearchEngine=()=>{
    let searchBox = document.querySelector('.searchBox input');
    console.log(searchBox.value)
}

方案3:使用ID选择器(推荐,查询效率更高)

给输入框添加唯一ID:

<input type="text" id="searchInput" class="searchBox" placeholder="Movie Name">

JS中用ID选择器获取元素:

const moviesearchEngine=()=>{
    let searchBox = document.getElementById('searchInput');
    console.log(searchBox.value)
}

内容的提问来源于stack exchange,提问作者Mohammad Mustak Absar Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:36:20