开发者问题收集

如何在 Javascript 中更改标题高度?

2019-12-16
1643

我试图在 Javascript 代码中动态更改页眉高度(在第二个 if 语句中)。这是我目前拥有的代码:

var currentDate =  new Date();
    // Months are zero indexed, so for 21 December:
    var saleStart = new Date("12-10-2017");
    var saleEnd = new Date("12-19-2019");

    if (saleStart <= currentDate && currentDate <= saleEnd && sessionStorage.getItem('firstVisit') === null) {
        // Set display to '' (empty string) so the element adopts its default or inherited value
        $(".sale_banner").show();
        $(".hover_bkgr_fricc").show();
        sessionStorage.setItem('firstVisit', '1');

    }
    else if(saleStart <= currentDate && currentDate <= saleEnd)
    {
        document.getElementsByClassName('header').style.height="140px";
        $(".sale_banner").show();
    }
    else{
        $(".sale_banner").hide();

    }

出于某种原因,更改页眉高度的行没有任何作用!我也尝试使用 getElementbyId ,但它也没有作用!

我的 header.phtml 文件打开时带有以下标记:

<header class="desktop">

这是我试图更改的 CSS 部分:

header.desktop {
  height: 173px;
  background-color: #6E348C;
}

我在括号中使用了 header,desktop,header.desktop ,但仍然没有成功!这是我在控制台上收到的错误:

Uncaught TypeError: Cannot read property 'style' of null
    at HTMLDocument.<anonymous> (myproject.js:28)
    at i (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at Function.ready (jquery.min.js:2)
    at HTMLDocument.J (jquery.min.js:2)

有人知道我遗漏了什么吗?

2个回答

使用 getElementsByClassName 总是返回一个数组,您可能希望将其更改为

document.getElementsByClassName('header')[0].style.height="140px";

假设您只有一个标题元素,如果可以使用 id 而不是类名就好了

Zhephard
2019-12-16

我没有看到您的 HTML 代码,但我猜您没有 header 类。 您的 CSS 建议您有一个带有 desktop 类的 header 标签(header.desktop) 然后,您应该尝试使用 getElementsByClassNamequerySelector ,:

document.getElementsByClassName('desktop')
// or
document.querySelector('.desktop')

您可以使用其中任何一个,但 querySelector 是一种更现代的方法,并且只返回一个元素(如果您有多个具有相同类名的元素,请尝试 querySelectorAllgetElementsByClassName

检查一下: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector

更新: 尝试一下

function changeHeight() {
  // Note that the class name is 'desktop', while 'header' is the name of the HTML tag
  document.querySelector('.desktop').style.height = "100px"
}
header.desktop {
  height: 50px;
  background-color: #6E348C;
}
<header class="desktop">This is the header</header>
<button onclick="changeHeight()">Change height</button>
Damian Peralta
2019-12-16