Javascript 如果我想在没有jQuery的情况下操作HTML/CSS,我应该采用什么方法?

Javascript 如果我想在没有jQuery的情况下操作HTML/CSS,我应该采用什么方法?,javascript,Javascript,我正在尝试在没有jQuery这样的大型库的帮助下进行一些html/css操作 我使用它来知道dom何时准备就绪,并从中调用我的函数: domready(function () { functionOne(); }) 如何对DOM进行更改,例如,将类删除/添加到元素中,并让它知道,以便我可以执行以下操作(在最后一行): var linkElement=document.getElementById(“myElement”); linkElement.className.replace(“活

我正在尝试在没有jQuery这样的大型库的帮助下进行一些html/css操作

我使用它来知道dom何时准备就绪,并从中调用我的函数:

domready(function () {
  functionOne();
})
如何对DOM进行更改,例如,将类删除/添加到元素中,并让它知道,以便我可以执行以下操作(在最后一行):


var linkElement=document.getElementById(“myElement”);
linkElement.className.replace(“活动”、“非活动”);
elementByClass=document.getElementsByClassName(“非活动”)[0];

尝试使用此代码为DOM元素指定类名

document.getElementById("myElement").className = "myClassName";

答案取决于您希望支持的浏览器。最新的浏览器已经在本地实现了许多jQuery特性(querySelector、classlist等)

您的代码是一个很好的开始,但它不起作用,因为replace不会在适当的位置更改字符串,而是返回一个新的字符串

<div id="myElement" class="active"></div>  

var linkElement = document.getElementById("myElement");
linkElement.className = linkElement.className.replace(" active", " unactive");
elementByClass = document.getElementsByClassName("unactive")[0];

var linkElement=document.getElementById(“myElement”);
linkElement.className=linkElement.className.replace(“活动”、“非活动”);
elementByClass=document.getElementsByClassName(“非活动”)[0];
查看类列表,检查使用类的更健壮的实现:

您需要重新分配它的DOM属性

例如,您可以将DOM元素的classname属性指定为

document.getElementById("myElement").className = "myClassName";
您可以使用设置所有其他Dom元素属性。

如果您的浏览器支持和,请执行以下操作:

elements = document.getElementsByClassName('existingClass');
elements.forEach(function(elem){
    elem.classList.remove("existingClass");
    elem.classList.add("newClass");
    elem.classList.add("foo","bar");
});

希望有帮助。

您需要将字符串重新分配给
.className
。如果您的目标是现代浏览器:
linkElement.classList.remove(“actice”);linkElement.classList.add(“非活动”):-)以下是您需要了解的关于DOM的全部内容:好吧,您可以使用纯javascript(或者您认为合适的任何其他脚本语言,假设您可以控制客户端呈现……这是我能想到的避免使用jQuery的唯一原因)。问题是,你最终会编写更多的代码,而且它的优化程度可能会低于jQ目前的优化程度。@mikehomechko:如果做得正确,它将比jQuery更优化。jQuery还使糟糕的代码模式变得非常容易。
elements = document.getElementsByClassName('existingClass');
elements.forEach(function(elem){
    elem.classList.remove("existingClass");
    elem.classList.add("newClass");
    elem.classList.add("foo","bar");
});