Javascript来更改元素的类
这是我目前正在处理的一个网页上的大量精简源代码Javascript来更改元素的类,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,这是我目前正在处理的一个网页上的大量精简源代码 <!--// GRID ENTRY //--> <li class="entry" id="sjDDulC8wt"> <div class="entry_actions"> <ul class="entry_actions"> <li class='have_it'> <a href='javascrip
<!--// GRID ENTRY //-->
<li class="entry" id="sjDDulC8wt">
<div class="entry_actions">
<ul class="entry_actions">
<li class='have_it'>
<a href='javascript: haveItem("name", "id", "none")' target='_self' title='Have It' class='have_it'>%</a></li>
</ul>
</div>
</li>
单击该链接时,
haveItem()
函数将运行,但不会更改类。如何更改脚本以便单击链接更改类?我假设您使用的是jQuery,因为您使用的是removeClass()
和addClass
。否则,我建议您链接到,以便下面的代码正常工作,或者只使用JavaScript
var targetA = $('#sjDDulC8wt .have_it');
targetA.addClass('selected');
以下是关于您的代码的一些您可以改进的地方,以供将来参考:
getElementById()
接受要检索的元素的id作为字符串。基本上,您应该将您的ID包装在”
或“
haveit
,而JavaScript的标题是haveit
Have_It
与Have_It
不是一回事。当您尝试按ID获取元素时,请注意这一点have_it selected
实际上既有have_it
类,也有selected
类。因此,不必删除have_it
,然后添加have_it selected
-您可以直接添加selected
类getElementbyTitle()
目前在JavaScript中不存在。此外,请再次注意大小写。通常,函数中每个单词的第一个字母都是大写的。因此,如果它确实存在,将被称为getElementbyTitle()
(注意B
而不是B
)我假设您使用的是jQuery,因为您使用的是
removeClass()
和addClass
。否则,我建议您链接到以便下面的代码正常工作,或者只使用JavaScript
var targetA = $('#sjDDulC8wt .have_it');
targetA.addClass('selected');
以下是关于您的代码的一些您可以改进的地方,以供将来参考:
getElementById()
将要检索的元素的id作为字符串接受。基本上,您应该将id包装在'
或“
haveit
,而您的JavaScript具有haveit
拥有它
不是一回事。当您尝试按ID获取元素时,请注意这一点have_它selected
实际上既有have_它
类,也有selected
类。因此,无需删除选择它
,然后添加选择它
——您可以直接添加选择的
类getElementbyTitle()
当前不存在于JavaScript中。此外,还要注意资本化。通常,函数中每个单词的第一个字母都大写。因此,如果它确实存在,它将被称为getElementByTitle()
(注意B
而不是B
)如果不能使用jQuery,则可以使用以下命令更改元素的类名: 还要注意这个函数:(HTML5) 正如已经指出的,在选择元素时还存在一些其他问题。从您的示例来看,您似乎希望使用:
var element = document.getElementById("sjDDulC8wt");
var children = element.getElementsByClassName("have_it");
children[0].className = "have_it selected";
注意这里没有错误处理/空检查。这将处理一个简单的情况,即假设存在指定类,只更改第一个子类
但如果可以使用jQuery,则更喜欢jQuery。从您使用的
addClass/removeClass
来看,您似乎已经期望使用jQuery了。如果您不能使用jQuery,那么您可以使用以下命令更改元素的类名:
还要注意这个函数:(HTML5)
正如已经指出的,在选择元素时还存在一些其他问题。从您的示例来看,您似乎希望使用:
var element = document.getElementById("sjDDulC8wt");
var children = element.getElementsByClassName("have_it");
children[0].className = "have_it selected";
注意这里没有错误处理/空检查。这将处理一个简单的情况,即假设存在指定类,只更改第一个子类
但如果可以使用jQuery,则更喜欢jQuery。从您使用的
addClass/removeClass
来看,您似乎已经在期待jQuery了。这将为您完成以下任务:
<a title="Have It" class="have_it" onclick="this.className+=' selected'">%</a>
。您使用的方法(getElementbyID
、getelementsbytle
、removeClass
和addClass
)均不存在。这将为您完成以下任务:
<a title="Have It" class="have_it" onclick="this.className+=' selected'">%</a>
。您使用的方法(getElementbyID
、getelementsbytle
、removeClass
和addClass
)均不存在。此处:
var anchor = document.querySelector( '#sjDDulC8wt [title="Have It"]' );
if ( anchor ) anchor.classList.add( 'selected' );
现场演示:
(在较旧的浏览器中不起作用。)此处:
var anchor = document.querySelector( '#sjDDulC8wt [title="Have It"]' );
if ( anchor ) anchor.classList.add( 'selected' );
现场演示:
(在旧浏览器中不起作用。)成功找到元素后,可以执行以下操作之一:
element.classList.add(“selected”)代码>
它使用了FF3.6、IE 10、Chrome 8、Opera 11.50、Safari 5.1及更高版本的全新功能。一旦您确信您的客户机将拥有其中一种浏览器(不久的将来),这将是最首选的方式
element.className+=“已选定”代码>
。这很有效,可能是最简单的方法。不像类列表
那样好,但适用于所有浏览器
成功找到元素后,可以执行以下操作之一:
element.classList.add(“selected”)代码>
它使用了FF3.6、IE 10、Chrome 8、Opera 11.50、Safari 5.1及更高版本的全新功能。一旦你确信你的客户将拥有