在javascript中修改对象内的节点

时间:2016-11-01 18:03:08

标签: javascript javascript-objects

我对如何访问已创建的Node对象的属性className感到有点困惑?

 var track = {
  mod: {
    el: document.body.appendChild(document.createElement('div')),
    el.className: 'w3-container w3-teal w3-hover-green'
  }
};

遗憾的是,这提供了错误:

Uncaught SyntaxError: Unexpected token .

我试图在对象中创建一个对象并修改内部对象的属性。我四处搜索并没有找到任何特定于此访问级别的内容,因为我需要修改DOM元素'className'的实际属性,而不仅仅是className的指定属性。

3 个答案:

答案 0 :(得分:1)

你想要做的事情非常简洁,但遗憾的是JavaScript并不支持开箱即用。

这是你仍然可以使它工作的一种方式:

var track = {
  mod: {
    el: document.body.appendChild(document.createElement('div'))
  }
};

// Add the className property here
track.mod.el.className = 'w3-container w3-teal w3-hover-green';

答案 1 :(得分:0)

似乎只是一个语法问题......不会是:

var track = {
  mod: {
    el: document.body.appendChild(document.createElement('div')),
    el: {
        className: 'w3-container w3-teal w3-hover-green'
    }
  }
};

答案 2 :(得分:0)

您可以使用立即调用的函数表达式,如下所示:

 var track = {
  mod: {
    el: (function () {
      var el = document.body.appendChild(document.createElement('div'));
      el.className = 'w3-container w3-teal w3-hover-green';
      return el;
    }())
  }
};

这只能在body存在之后才能完成。此外,this不会在功能中引用tracktrack.mod