【问题标题】:Bad Assignment (JavaScript)错误分配 (JavaScript)
【发布时间】:2022-07-27 22:47:24
【问题描述】:

我是 JavaScript 和 DOM 的新手,因此我尝试编写一个程序,该程序在您单击按钮时显示文本,并在您再次单击按钮时更改文本。虽然程序按预期运行,但我收到 Bad Assignment 警告,因为我将一个函数分配给另一个函数,所以我想知道这样做是否不合适以及是否有更好的方法正在做。这是下面的代码,在 thirdClick() 函数中,我在其中进行了分配。

const body = document.body;
const btn = document.querySelector('#btn');


const firstClick = function() {
    const h1 = document.querySelector('#h1');
    btn.addEventListener('click', () => {
        h1.innerText = 'I Am Injected Into This Page  by JavaScript ????, Click the Button Again and see ????';
        body.append(h1);
        secondClick();
    });
};


const secondClick = function() {
    const h2 = document.querySelector('#h1');
    btn.addEventListener('click', () => {
        h2.innerText = 'Am also injected into this page by JavaScript cool right ????';
        body.append(h2);
        thirdClick();
    });
};


const thirdClick = function() {
    if (secondClick()) {
        secondClick() = firstClick();
    }
    else {
        firstClick();
    }
};

firstClick();

【问题讨论】:

  • 一个按钮可以有多个事件监听器。添加一个新的并不会删除已经存在的内容。因此,当您多次调用 firstClick 或 secondClick 时,您正在向按钮添加更多事件侦听器,这些事件侦听器将在您单击按钮时全部执行。
  • 哦,我的眼睛。请编写更清晰的代码。 secondClick() = firstClick() 到底是什么鬼。向元素添加一个侦听器,然后让计数器知道按钮被点击了多少次

标签: javascript


【解决方案1】:

您只能为对象的变量和属性赋值。

const foo = 1;
const bar = {};
bar.baz = 2;

你不能为调用函数的结果赋值:

alert("Hello, world!") = 3; // Nonsense!

...因为它的设计初衷不是用来存储数据。


如果您想跟踪点击次数,请将函数分配给您引用的变量,或者只保留一个计数。

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 2013-02-05
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2014-04-28
    • 2018-10-02
    相关资源
    最近更新 更多