使用javascript将另一个类添加到div

Zac*_*Zac 44 javascript

我有一个函数来检查表单提交的年龄,然后根据年龄在div中返回新内容.现在我只是使用getElementById来替换html内容.我认为如果我也可以为div添加一个类,那对我来说会更好.所以例如我有..

if (under certain age) {
    document.getElementById('hello').innerHTML = "<p>Good Bye</p>"; 
    createCookie('age','not13',0)
    return false;
} else {
    document.getElementById('hello').innerHTML = "<p>Hello</p>";  
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将所有东西都放在div中,如果返回false,那么div就会消失并被其他内容替换..我能用一个很好的方法获得任何想法,用纯粹的javascript实现这一点.我不想为这个特殊的功能使用jQuery.

kar*_*m79 72

如果元素没有类,请给它一个.否则,追加一个空格,后跟新的className:

  var el = document.getElementById('hello');
  if(el) {
    el.className += el.className ? ' someClass' : 'someClass';
  }
Run Code Online (Sandbox Code Playgroud)

  • @zac - 这是条件运算符.如果`el.className`的计算结果为true,则第一个值(在问号之后)被赋值,如果为false,则第二个值被赋值.这是一个if..else快捷方式.看看这里:http://www.w3schools.com/JS/js_comparisons.asp (2认同)
  • @DavidGiven因为那是一个三元运算符,他实际上并没有输出`el.className`,而是使用三元运算符检查它的存在.不输出条件,但是真/假结果是,取决于`className`的存在. (2认同)
  • 自此答案发布以来已经过去了七年,而当时这是最好的方法,@Rich 答案是当今处理 CSS 类名称的更新且更简洁的方法。 (2认同)

Ric*_*key 51

使用Element.classList

document.getElementById('hello').classList.add('someClass');
Run Code Online (Sandbox Code Playgroud)

.add如果该元素上尚不存在该类,则该方法仅添加该类.因此无需担心重复的类名.

  • 到目前为止,这是更好的方法.如果该类已经存在,则只需添加/删除(添加/删除),而不是多次添加相同的类. (10认同)
  • 我同意,这应该是正确的答案。 (2认同)

mea*_*gar 24

您可以className使用前导空格将类附加到成员.

document.getElementById('hello').className += ' new-class';
Run Code Online (Sandbox Code Playgroud)

请参阅https://developer.mozilla.org/En/DOM/Element.className