Javascript 仅当body类存在时才执行函数

Javascript 仅当body类存在时才执行函数,javascript,Javascript,我的身体课是这样的: <body class="horizontal"> 但这是行不通的。警报不会弹出。因此,我更喜欢纯javascript解决方案,而不包括Jquery 编辑:我取消了水平滚动条功能的注释,然后它就开始工作了。因此,脚本是问题的根源 整个脚本在主体的底部被调用。只需删除“'use strict'”,它就会工作。在执行该函数之前DOM是否加载过?此JavaScript代码是在标记之前还是内部?您需要显示一个包含HTML和标记的完整网页。您的代码正

我的身体课是这样的:

<body class="horizontal">
但这是行不通的。
警报不会弹出。因此,我更喜欢纯javascript解决方案,而不包括Jquery

编辑:我取消了水平滚动条功能的注释,然后它就开始工作了。因此,脚本是问题的根源


整个脚本在主体的底部被调用。

只需删除“'use strict'”
,它就会工作。

在执行该函数之前DOM是否加载过?此JavaScript代码是在
标记之前还是内部?您需要显示一个包含HTML和
标记的完整网页。您的代码正在运行检查此>>正如其他人所说,您必须将{}放入正文加载后,最好使用
document.body.classList.contains('horizontal')
。它可以工作!非常感谢。你能给我一个解释为什么会导致这种情况吗?不,对于use strict,只有在我取消注释
水平滚动
(这就是为什么我得到了很多否决票,因为“聪明人”认为在代码中呈现的那部分与问题无关)时,它才会运行。我使用Firefox最新版本@apsillers Firefox 44.0.2 x64运行此版本没有任何警报,只要我取消注释水平滚动的
:@apsillers对我来说也是,浏览器导致problem@Lanti您已经被告知要查看浏览器的错误控制台(按ctrl-shift-K)。错误消息会立即告诉您问题所在(“在严格模式代码中,函数可能仅在顶层声明,或者直接在另一个函数中声明”)。
'use strict';

// Horizontal scrolling
// http://www.dte.web.id/2013/02/event-mouse-wheel.html
(function() {
if(document.body.className === 'horizontal') {
  alert('It exists');

  function scrollHorizontally(e) {
    e = window.event || e;
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
    // Scroll to the left or right in `document.documentElement` and `document.body`
    document.documentElement.scrollLeft -= (delta * 75); // Multiplied by 75
    document.body.scrollLeft -= (delta * 75); // Multiplied by 75
    e.preventDefault();
  }
  if (window.addEventListener) {
    window.addEventListener('mousewheel', scrollHorizontally, false); // IE9, Chrome, Safari, Opera
    window.addEventListener('DOMMouseScroll', scrollHorizontally, false); // Firefox
  } else {
    window.attachEvent('onmousewheel', scrollHorizontally); // IE 6/7/8
  }
};
})();