如何用javascript替换类HTML名称

时间:2012-01-03 06:44:42

标签: javascript replace classname

好吧所以我要做的就是用类名'no-js'获取元素,并用'js'替换它,所以我不知道如何做到这一点,我试过谷歌周围但不能找不到任何东西, 那么现在有人怎么做?

我想要做的是这个菜单,当你点击一个加号按钮它有这个下拉菜单,但如果javascript被禁用我希望它显示悬停与CSS(我已经完成了)

我把我的代码放在JsFiddle上,继承人的链接: http://jsfiddle.net/MrPumpkin22/v9dcC/10/

感谢。

6 个答案:

答案 0 :(得分:10)

您需要迭代返回的元素并在每个元素上替换该类名称的那一部分:

var els = [].slice.apply(document.getElementsByClassName("no-js"));
for (var i = 0; i < els.length; i++) {
    els[i].className = els[i].className.replace(/ *\bno-js\b/g, "js");
}

请注意,getElementsByClassName会返回“实时列表”,这就是为什么必须首先复制返回值(使用[].slice)并重复该列表的原因。

答案 1 :(得分:6)

通过javascript,您可以使用

更改班级名称

document.getElementById('elementid').className = 'classname'

如果你想通过javascript使用

添加一个新类

document.getElementById('elementid').className += ' classname'

如果你想用其他东西替换类名,请使用字符串替换函数

document.getElementById('elementid').className = document.getElementById('elementid').className.replace(your replace code)

答案 2 :(得分:4)

看起来像一个问题,但似乎是这样做的首选方式......

<!DOCTYPE html>
<html lang="en-US" class="no-js">
<head itemscope itemtype="http://schema.org/WebSite">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="profile" href="http://gmpg.org/xfn/11">
    <script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
    <title>Example Site| My Site Description</title>

示例:

@RunWith(AndroidJUnit4.class)
public class HomeActivityTest {

  @Rule
  public final IntentsTestRule<HomeActivity> mHomeActivityRule = new IntentsTestRule<HomeActivity>(HomeActivity.class);


  @Test
  public void testFundTransferActivityStarted() {

    onView(withId(R.id.button_fund_transfer)).perform(click());

    intended(hasComponent("mypackage.FundTransferActivity"));
 }

}

请注意文档头的早期位置...这可确保立即添加它。这比jquery替代方法快得多。我相信这就是现代化的方式。

答案 3 :(得分:2)

getElementsByClassName方法的名称是否会提示您应该返回的不是单个元素而是多个元素?因为文档中可能有许多具有相同类的元素。 Read the docs更加谨慎。

如果您熟悉CSS,则有document.querySelectorAll method,它通过CSS选择器检索元素。

var plusLinks = document.querySelectorAll('a.no-js')

然后,您可以通过数字索引访问各个链接:

var firstLink = plusLinks[0]

至于class属性( class属性,而不是no-js属性),你不应该删除它,而是{{3 }}

firstLink.setAttribute('class', 'js')

或者:

firstLink.className = 'js'

由于你想要删除悬停效果,并且body元素上已经有no-js类,你可以为整个页面替换一次类:

document.body.className = 'js'

答案 4 :(得分:-1)

第1步 - 通过它的唯一ID获取元素 -

Element = Document.GetElementByID("whatever");

步骤2-删除属性类 -

Element.RemoveAttribute("class");

第3步 - 创建属性类 -

    var attribute = document.createAttribute("class");
    attribute.nodeValue = "someclassnamehere"
    Element.setAttributeNode(attribute);

答案 5 :(得分:-3)

在Javascript中,您可以通过以下方式执行此操作:

document.getElementById('id').add('class');
document.getElementById('id').remove('class');