javascript - 构建计算器,获取 Cannot set property 'value' of null

标签 javascript function object properties calculator

我正在构建一个计算器,但不断收到此错误,我尝试了几种不同的方式来输入它,但我无法弄清楚,请帮忙!

const calculator = {
  displayValue: '0',
  firstOperand: null,
  waitingForSecondOperand: false,
  operator: null,
};

function updateDisplay() {
  const display = document.querySelector('.calculator-screen');
  display.value = calculator.displayValue;
}

updateDisplay();

我收到错误

  display.value = calculator.displayValue;

这是该文件的 html

<div class="calculator">
            <input type="text" class="calculator-screen" value = "0" disabled />
            <div class="calculator-keys">        
                <button type="button" class="operator" value="+">+</button>
                <button type="button" class="operator" value="-">-</button>
                <button type="button" class="operator" value="*">&times;</button>
                <button type="button" class="operator" value="/">&divide;</button>

最佳答案

该错误意味着这一行:

const display = document.querySelector('.calculator-screen');

返回 null。所以当你这样做时:

display.value = calculator.displayValue;

你实际上是在说:

null = calculator.displayValue;

尝试记录该值并自行检查:

function updateDisplay() {
  const display = document.querySelector('.calculator-screen');
  console.log('display: ', display); // this is probably 'null'
  display.value = calculator.displayValue;
}

我猜您没有 .calculator-screen 类的选择器。仔细检查拼写或发布相关 HTML,以便我确认。

这是您的代码,它似乎工作正常,我没有收到错误,所以我不确定您这边发生了什么:

const calculator = {
  displayValue: '0',
  firstOperand: null,
  waitingForSecondOperand: false,
  operator: null,
};

function updateDisplay() {
  const display = document.querySelector('.calculator-screen');
  display.value = calculator.displayValue;
}

updateDisplay();
<div class="calculator">
    <input type="text" class="calculator-screen" value = "0" disabled />
    <div class="calculator-keys">        
        <button type="button" class="operator" value="+">+</button>
        <button type="button" class="operator" value="-">-</button>
        <button type="button" class="operator" value="*">&times;</button>
        <button type="button" class="operator" value="/">&divide;</button>
    </div>
</div>

关于javascript - 构建计算器,获取 Cannot set property 'value' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854138/

相关文章:

java - 为什么Object.equals可以比较不能用引用相等运算符(==)比较的类型?

arrays - Swift:按函数值对对象排序

javascript - 使用文本区域创建 jQuery 插件时出现问题

python - 代码与前面的行相同,但给出了错误?

function - Haskell - 尝试创建一个函数来查找奇数的阶乘

从 mysql 表中选择记录的 Python 函数

c++ - 与类相同类型的对象

javascript - 为什么我的 datatables.js 上的搜索功能不起作用?

javascript - 如何在 .NET 应用程序中使用 RequireJS?

javascript - 无法获得 Angularjs 在 html 页面中显示为表达式的结果