如何让选择器选择div类,标签名为p?

时间:2017-03-30 00:06:18

标签: javascript html

你好,我现在有点卡住了。我试图让我的脚本选择div类改变中的所有段落,但我真的不明白该怎么做。 html在正文中看起来像这样

var fontChange = document.getElementsByClass("change").getElementsByTagName("p");

for (let i = 0; i < changeFont.length; i++) {
    changeFont[i].onmouseover=function() {
        this.style.color = "red";
    }
}

for (let i = 0; i < changeFont.length; i++) {
    changeFont[i].onmouseout=function() {
        this.style.color = "black";
    }
}

我试图这样做,当鼠标光标触及段落中有一类变化的任何东西时,它会将颜色更改为我选择的颜色,但我不知道如何使用选择器纯粹的javascript。这是我目前的代码,但它不起作用。我只能使用javascript

def init = { servletContext ->
    def adminUser = User.findByUsername("episo_admin_root")
        if(!adminUser){
            print "Creating admin user... "
            adminUser = new User(username: username, emailAddress: emailAddress, password: password, birthDate: new Date(1, 1, 1),
                    sex: Sex.AGENDER, enabled: true, accountConfirmed: true, accountCreationDate: new Date())
            adminUser.save(flush: true, failOnError: true)
            def auth = adminUser.addAuthority(Roles.ROLE_ADMIN)
            auth.save(flush: true, failOnError: true)
        }
}

2 个答案:

答案 0 :(得分:1)

没有功能getElementsByClass,它是getElementsByClassName

document.getElementsByClassName()返回一个集合(请参阅What do querySelectorAll, getElementsByClassName and other getElementsBy* methods return?),您必须将其编入索引,以便对其返回的元素使用getElementsByTagName

var fontChange = [];
var change = document.getElementsByClassName("change");
for (var i = 0; i < change.length; i++) {
    var paras = [].slice.call(change[i].getElementsByTagName("p"));
    fontChange.concat(paras);
}

或者您可以使用querySelectorAll

var fontChange = document.querySelectorAll(".change p");

你也有拼写错误。您设置变量fontChange,然后在循环中使用changeFont

答案 1 :(得分:0)

您可以在没有javascript的情况下实现您想要的效果,只需将此代码添加到您的css

即可
.change p:hover {
    color: red;
 }