【问题标题】:window.innerWidth If Not Firingwindow.innerWidth 如果没有触发
【发布时间】:2016-03-20 01:35:13
【问题描述】:

我正在尝试获取一个下拉菜单来显示屏幕尺寸何时小于 500 像素。稍后,我将删除导航栏,以便此菜单在小型设备上替换它。

代码对我来说看起来不错,警报确实会触发,但菜单没有显示。

TLDR:需要在屏幕尺寸小于 500px 时显示菜单

JSFiddle:https://jsfiddle.net/mcgettrm/y4edsu73/

代码:

var dropDownFunction = function(){
	var menuContent = document.getElementById("dropDownMenuClass");
	menuContent.classList.toggle("menuShow");
}


var windowWidth = window.innerWidth;

	if(windowWidth < 500){
		alert("window is too small");
		
		var dropDownMenu = getElementById("dropDownMenu");
		dropDownMenu.classList.toggle("mainMenuShow");
		
		
		
	}
#dropDownMenu {
	
}
.dropDownMenuClass{
	display:none;
}
.mainMenuShow{
	display: block;
}

#dropDownMenuContent {
	
}
.dropDownMenuContentClass {
	display: none;
    position: absolute;
    background-color: #f9f9f9;
    min-width: 160px;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
	width:100%;
	text-align: center;
}
#dropDownMenuContent a {
	color: black;
	padding: 12px 16px;
    text-decoration: none;
    display: block;
	
}
#dropDownMenuContent a:hover {
	background-color: #f1f1f1;

}
#dropDownButton {
	width:100%;
	background-color: #4CAF50;
    color: white;
    padding: 16px;
    font-size: 16px;
    border: none;
    cursor: pointer;
}

.menuShow {
	display: block;
}
<div id="dropDownMenu" class="dropDownMenuClass">
					<button onclick="dropDownFunction()" id="dropDownButton">MENU</button>
					<div id="dropDownMenuContent" class="dropDownMenuContentClass">
						<a href="index.html">Home</a>
						<a href="about.html">About</a>
						<a href="itprojects.html">IT Projects</a>
						<a href="languageprojects.html">Language Projects</a>
						<a href="contact.html">Contact</a>
						<a href="essays.html">Essays</a>
					</div>
	</div>

【问题讨论】:

标签: javascript html css


【解决方案1】:

getElementByIDdocument的方法

var dropDownMenu = document.getElementById("dropDownMenu");

【讨论】:

  • 嘿,谢谢!我进行了更改,即使它在小提琴中有效,但我现在收到此错误:未捕获的 TypeError:无法读取 null 的属性“classList”。我在 classList 上做错了吗?
  • 您需要确保您的脚本在文档加载后运行。否则dropDownMenu 还不存在。将脚本放在文档末尾应该可以修复错误
  • 我在样式表中运行它,但我所做的是设置一个事件侦听器,以便在页面加载后触发脚本并解决问题。你是 100% 正确的。谢谢一百万!
【解决方案2】:

始终检查控制台是否有错误。例如在 Chrome 中你会看到

Uncaught ReferenceError: getElementById is not defined

应该是:

var dropDownMenu = document.getElementById("dropDownMenu");

更新小提琴:https://jsfiddle.net/y4edsu73/1/

【讨论】:

  • 嘿,谢谢!我进行了更改,即使它在小提琴中有效,但我现在收到此错误:未捕获的 TypeError:无法读取 null 的属性“classList”。我在 classList 上做错了吗?
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
相关资源
最近更新 更多