我正在阅读JavaScript_and_JQuery_Interactive_Front-End_Web_Development_by_Jon_Duckett,这是Javascript学习的一部分。 我在第119页,添加和删除对象的属性。 Bellow是html,js和css文件。
我更改了javascript文件
elPool.className = "Pool: " + hotel.pool;
是:
elPool.className = hotel.pool
但它似乎没有改变Firefox中的输出。
问题:
.className
的事情,我的结论是:var elPool
首先得到'pool'元素的HTML值(在这种情况下,它是'pool'这个词)。然后,该元素通过elPool
变量分配了一个新类(因为之前没有它)。在这种情况下,它是一个类.true
。
正确或错误的结论?.true
和.false
类只有一个联合图片。当必须有一个十字标志和一个交叉检查标志时,这怎么可能?这是两张照片?var elGym
获得className
false
(通过elGym.className = hotel.gym;
),并相应地获得CSS调整。如果var elPool
有两个添加为classNames(className
和true
的内容,那么"Pool: "
如何获得hotel.pool
"Pool: "
? <!DOCTYPE html>
<html>
<head>
<title>JavaScript & jQuery - Chapter 3: Functions, Methods & Objects - Adding properties</title>
<link rel="stylesheet" href="css/c03.css" />
</head>
<body>
<h1>TravelWorthy</h1>
<div id="info">
<h2>hotel facilities</h2>
<div id="hotelName"></div>
<div>
<p id="pool">Pool</p>
<p id="gym">Gym</p>
</div>
</div>
<script src="js/adding-and-removing-properties.js"></script>
</body>
</html>
部分完全被忽略了,或者这里的原理是什么?
Thanx all! HTML:
// Set up the object
var hotel = {
name : 'Park',
rooms : 120,
booked : 77
};
hotel.gym = false;
hotel.pool = true;
delete hotel.booked;
// Update the HTML
var elName = document.getElementById('hotelName'); // Get element
elName.textContent = hotel.name; // Update HTML with property of the object
var elPool = document.getElementById('pool'); // Get element
elPool.className = "Pool: " + hotel.pool; // Update HTML with property of the object
var elGym = document.getElementById('gym'); // Get element
elGym.className = hotel.gym; // Update HTML with property of the object
JS:
@import url(http://fonts.googleapis.com/css?family=Open+Sans);
body {
background-color: #fff;
background: url("../images/travelworthy-backdrop.jpg") no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
margin: 0;
font-family: 'Open Sans', sans-serif;}
h1 {
background: #1e1b1e url("../images/travelworthy-logo.gif") no-repeat;
width: 230px;
height: 180px;
float: left;
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
margin: 0;}
h2 {
margin: 1.75em 0 0 0;
color: #adffda;
font-weight: normal;}
h2 + p {
margin: 0.25em 0 0 0;}
p + p {
margin: 0;}
p + h2 {
margin: 10px 0 0 0;}
/* message under the logo */
#message {
float: left;
clear: left;
background-color: #ffb87a;
color: #1e1b1e;
width:170px;
padding: 18px 30px;
text-align: center;}
/* black bar across the right hand side of the page */
#info {
background-color: #1e1b1e;
color: #fff;
width: 200px;
padding: 0 15px;
text-align: center;
min-height: 100%;
position: absolute;
top: 0;
right: 15%;}
/* details in the black bar */
#hotelName {
text-transform: uppercase;
text-align: center;
font-size: 120%;
margin-top: 10px;
border-top: 1px solid #fff;
border-bottom: 1px solid #fff;
padding: 10px 0;}
#hotel1 {
margin-top: 1em;
border-top: 1px solid #fff;
padding-top: 1em;}
#hotel2 {
border-bottom: 1px solid #fff;
padding-bottom: 1em;}
#rooms {
font-size: 440%;
color: #ffb87a;
display: inline-block;
margin: 0;}
#roomRate{
text-decoration: line-through;
display: inline-block;
float: left;
padding-top: 10px;}
#specialRate {
font-size: 440%;
color: #ffb87a;
display: inline-block;
padding: 10px 0 20px 0;
margin: 0;}
#offerEnds {
text-transform: uppercase;
color: #ffb87a;
font-size: 75%;}
.true, .false {
padding: 0 50px 0 50px;
line-height: 28px;
text-align: left;
background-image: url("../images/check-cross.png");
background-position: 120px 0;
background-repeat: no-repeat;}
.false {
background-position: 120px -28px;}
/* footer */
#footer {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: #adffda;}
#footer p {
padding: 10px;
margin: 0;}
.data {
padding: 10px;}
CSS:
{{1}}
答案 0 :(得分:2)
document.getElementById('pool')
返回DOM元素,而不是文本内容。因此,当您分配到.className
属性时,您需要设置元素的类,就好像它在HTML中有class="Pool: true"
一样。
在.true
和.false
的CSS中有一个联合条目,但.false
的另一个条目覆盖了{{1}风格。它使用CSS sprite:单个图像文件,其中包含不同位置的多张图片,background-position
根据班级安排合适的图片显示。
background-position
是以空格分隔的类列表,因此className
是两个类"Pool: true"
和Pool:
。由于true
没有CSS(因为.Pool:
在CSS选择器中具有特殊含义而必须写为.Pool\:
),所以该类实际上被忽略了。我不确定书中的原因,也许是尝试在HTML中使类的含义更加明显。恕我直言,最好使用:
和pool-true
或pool-false
和pool
等类。