用javascript更改类
Change Class with javascript
我有一个使用身体背景图像的网站。调整浏览器大小时,我想更改实体类。
JavaScript:
function MOSTRA() {
var SCR = screen.availWidth
var BRW = window.outerWidth
if BRW < SCR {
document.getElementById(BODY).className = 'BDYL'
}
else {
document.getElementById(BODY).className = 'BDNL'
}
}
HTML:
<body id="BODY" class="BDNL" onResize="MOSTRA()">
我以为这个类会被更改(为背景大小:auto),但事实并非如此。如何更改背景大小或整个班级?我只能使用Javascript、HTML或CSS。
在if
语句中的条件周围需要括号,在字符串BODY
周围需要撇号(或引号)。
此外,您应该用分号分隔行。如果语句可以在行尾结束,脚本解析器会自动将它们添加到行尾,但如果忘记了结束括号,则可能会收到意外的错误消息,因此解析器无法自动添加分号。
您可能还想从正文的onload
事件中调用函数,以便在加载页面时设置类。
function MOSTRA() {
var SCR = screen.availWidth;
var BRW = window.outerWidth;
if (BRW < SCRI) {
document.getElementById('BODY').className = 'BDYL';
} else {
document.getElementById('BODY').className = 'BDNL';
}
}
演示:http://jsfiddle.net/Guffa/q56WM/
这是有效的:
<script type="text/javascript">
window.onload = function () {
window.onresize = function (evt) {
var width = window.innerWidth ||
(window.document.documentElement.clientWidth || window.document.body.clientWidth);
if (width < screen.width)
{
document.body.className = 'BDYL';
}
else
{
document.body.className = 'BDNL';
}
}
};
</script>
我不太确定你实际上想要实现什么(链接到你正在处理的页面会很有帮助),但我想到了以下内容:
-
您可能需要使用流体布局技术(在CSS中使用容器维度的百分比值)来确保您的DIV元素相对于查看器屏幕分辨率进行渲染(请阅读:它的父维度-父DIV元素或body元素,其宽度为100%,表示页面的可用宽度。
div {width:60%}
-
再想想你实现背景图像的方式,如果你需要页面上的元素与背景图像对齐,你不应该将背景图像设置为
background-size:contain
,因为这会在调整窗口大小时给你带来很多麻烦。相反,将背景分割成多个部分,并将生成的较小图像分配给页面中需要与其对齐的不同部分 -
在设计不同分辨率时相关:媒体查询和响应式布局。
-
您可能需要检查jQuery resize()。jQuery将负责调整大小事件的不同浏览器实现。
$(window).resize(function() { $('body').prepend('<div>' + $(window).width() + '</div>'); });
此外,这将使您有可能通过使用jQuery事件系统来实现更优雅的JavaScript。当然,只有当计划在页面上进行任何进一步的JavaScript工作时,这才是相关的。事实上,我引用这个只是为了完成。
-
您发布的代码无效。
- 您错过了以分号结尾的行(尽管代码可能正常工作,因为解释器通常能很好地猜测它)
- 不需要在body元素上使用ID,只需通过
document.getElementsByTagName()
获取即可 - 您需要将标记名称(BODY)置于引号中
- 将if-else语句的条件放入反命题中
你的代码应该是这样的:
function MOSTRA() { var SCR = screen.availWidth; var BRW = window.outerWidth; if (BRW < SCR) { document.getElementsByTagName('BODY').className = 'BDYL'; } else { document.getElementsByTagName('BODY').className = 'BDNL'; } }
或者,正如MaxArt所指出的,只需使用
document.body
function MOSTRA() { var SCR = screen.availWidth; var BRW = window.outerWidth; if (BRW < SCR) { document.body.className = 'BDYL'; } else { document.body.className = 'BDNL'; } }
如果所有这些都无济于事,请耐心等待,因为我真的只能猜测你的问题是什么。正如所说,有问题页面的链接会很有帮助。
此外,你的问题给人的印象是,你对这一切都是新手,如果不是,请原谅我的漫无边际。
我不明白为什么需要使用JavaScript。
CSS:
body {
position: relative;
width: 100%;
}
您的代码中存在语法错误。您没有将字符串传递给getElementById()
。
此:
document.getElementById(BODY).className = 'BDYL'
应该是这样的(带引号,使其成为字符串):
document.getElementById("BODY").className = 'BDYL'
更新:
或者正如MaxArt在评论中指出的那样,只有document.body.className = "BDYL"
更新2:
正如Mikahil所指出的,if语句中也有语法错误,因此您的函数可能看起来像这样:
function MOSTRA() {
var SCR = screen.availWidth,
BRW = window.outerWidth;
if (BRW < SCRI) {
document.body.className = 'BDYL';
} else {
document.body.className = 'BDNL';
}
}
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量