0

假设我有 5 个按钮。当客户端按下其中一个时,JS 将this对象发送到一个函数,该函数通过访问来更改按钮的状态,比如说this.state多变的。我遇到的问题是我不知道如何在 JS 中创建这些单独的变量,以便每个按钮都有其他按钮不使用的单独变量。我可以使用 CSS 并更改某种 CSS 属性来完成这项工作,例如对页面中的元素不做任何事情的 CSS 属性,但可以包含不同的属性,比如从 0 到 2 的数字,它们代表状态。但这看起来不太好,因为这不是 CSS 的用途:) 我想知道这个网站上是否有人知道创建这些单独变量的方法?我对 JS 很陌生,我知道我需要阅读它,但现在我正在努力解决这个问题,无法在搜索引擎上找到解决方案。感谢所有愿意提供帮助的人!

4

2 回答 2

1

页面上的每个按钮都是对象类型“HTMLButtonElement”的一个实例。这意味着您可以像对待任何其他对象一样对待它。

假设你只有一个按钮,而不是一个按钮var me = {};。您可以非常轻松地编写
me.state = true;它,它将在对象上创建属性。

现在假设您有两个对象,var btn1 = {}, btn2 = {};. 设置btn1.state = true;。即使它们是相同对象类型的实例(在本例中为通用“对象”类型),btn2.state也没有受到影响。

此外,访问不存在的属性会返回特殊值undefined。该值被认为是false在松散比较中使用时(即,只是if( btn2.state)
btn2.state == false)。这意味着如果您不提前明确定义它并不重要,因为它的行为就像一个false值。

要考虑的另一件事是,即使两个变量可能包含相同对象类型的不同实例(例如 thebtn1btn2上述),它们也不相等,因为它们是不同的实例。考虑以下:

var btn1 = {}, btn2 = {};
alert(btn1 == btn2); // false
var btn1copy = btn1;
alert(btn1 == btn1copy); // true, both variables point to the same instance

“btn1copy”在上面的代码中并不是一个合适的名字。它不是实例的副本,而是引用的副本。这意味着,因为我们已经明确设置btn1btn1copy平等,对一个的更改影响另一个。观察:

var btn1 = {}, btn2 = {}, btn1copy = btn1;
btn1copy.state = true;
alert(btn1.state); // true
alert(btn2.state); // undefined

我希望这能帮助你更多地理解 JavaScript 对象。如果我只是进一步混淆了你,那么我道歉!如果我能帮助您进一步理解,请告诉我。

于 2013-11-07T13:51:27.977 回答
0

您可以像这样在元素上设置任何属性:

var currentEl = document.getElementById('myButton');
currentEl.state = 0;
currentEl.favouriteColour = "purple";
currentEl.thing = "hello"

var currentEl = document.getElementBytagName('input')[0];
currentEl.state = 0;
currentEl.favouriteColour = "purple";
currentEl.thing = "hello"

编辑:

或者您可以创建一个对象,然后将其作为属性添加到元素中:

var settings = {
    'id': 'myId',
    'colour': 'red',
    'thing': 'something
};

然后:

var currentEl = document.getElementBytagName('input')[0];
currentEl.settings = settings;

然后你可以像这样访问它们:

alert(currentEl.settings.colour);
于 2013-11-07T13:53:46.393 回答