好吧所以我要做的就是用类名'no-js'获取元素,并用'js'替换它,所以我不知道如何做到这一点,我试过谷歌周围但不能找不到任何东西, 那么现在有人怎么做?
我想要做的是这个菜单,当你点击一个加号按钮它有这个下拉菜单,但如果javascript被禁用我希望它显示悬停与CSS(我已经完成了)
我把我的代码放在JsFiddle上,继承人的链接: http://jsfiddle.net/MrPumpkin22/v9dcC/10/
感谢。
答案 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');