类型错误:$(...).style未定义 - 是bug还是我的错?

9
我首先只想要改变一个元素的背景,但是遇到了这个问题:
在Firefox控制台中出现以下错误:TypeError: $(...).style is undefined HTML代码:
<!DOCTYPE html>
<html lang="DE">
<head>
 <meta charset="utf-8"/>
 <title>Laura Sack - Offizielle Webseite</title>
</head>
<body>
 <div id="gallery-container" class="gallery-container cf"></div>
 <script src="js/jquery.js"></script>
 <script src="js/main.js"></script>
</body>
</html>

Javascript:

$(document).ready(function(){
   $("#gallery-container").style.background = "black";
});

10
这是你的错,style 是纯 JavaScript 元素对象的属性,而不是 jQuery 对象的属性。尝试使用 $("#gallery-container")[0].style。但是,你应该使用 .css jQuery 方法,忘记 style 属性。 - King King
1
哇,感谢你!.. :) - Steve
请阅读文档 http://learn.jquery.com/using-jquery-core/jquery-object/ - chiliNUT
$("#gallery-container") 是一个 jQuery 对象,你正在尝试使用脚本来设置一个 DOM 节点的样式。要么将其转换为 DOM 节点并包含 [0],例如 $("#gallery-container")[0],或者建议使用 jQuery 的 .css() 方法来设置样式。 - Jai
谢谢您的提问!作为一名后端程序员,我只是复制了一个函数toggle()来显示/隐藏DOM对象,结果只有[0]缺失了。http://www.dustindiaz.com/seven-togglers/下的“toggling multiple objects”部分。 - Marcos
4个回答

13

你把JavaScript和jQuery混淆了。

在jQuery中,你需要使用css()函数才能使它像这样工作:

 $("#gallery-container").css("background","black");

2

试试这个:

$(document).ready(function(){
   $("#gallery-container").css('background-color','black');
});

1
这是正确的jQuery方法:

This is the correct jQuery method:

$(document).ready(function(){
   $("#gallery-container").css('background-color','black');
});

0
您需要通过以下方式来实现存在:
$(document).ready(function(){
   let g = $("#gallery-container");
   if(typeof g !== undefined) g.css('background','black');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接