我对如何访问已创建的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的指定属性。
答案 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
不会在功能中引用track
或track.mod
。