Javascript代码添加了一些不应该存在的内容
Javascript code adding something that shouldnt be there
我正在创建一个网站,我想设计一个菜单样式,当以特定的px宽度显示时,只显示一种方式。稍后我将更改代码以执行if语句,检查它是否是触摸屏。但是,现在我必须使用px宽度来测试代码。然而,我当前的代码即使在我更改为更高的宽度后正确加载了一定的宽度,它仍然会添加我的标签和输入。我的代码笔
我的javascript代码。
var mediaTab = window.matchMedia("(max-width: 1024px)");
function addmenu() {
if (mediaTab) {
var menu = document.querySelector("#top-lvl-menu");
var navBar = document.querySelector("nav");
var navToggle = document.createElement("label");
var navInput = document.createElement("input");
navToggle.innerHTML = "☰ Menu";
navToggle.className = "menu";
navInput.id = "menu-Toggle";
navInput.type = "checkbox";
navToggle.appendChild(navInput);
navBar.insertBefore(navToggle, menu);
navToggle.appendChild(menu);
}
}
window.addEventListener("load", addmenu, false);
<nav>
<ul id="top-lvl-menu">
<li><a href="#">Link</a>
</li>
<li><a href="#">Link</a>
<ul id="services-submenu">
<li><a href="#">Link</a>
</li>
<li><a href="#">Link</a>
</li>
</ul>
</li>
<li><a href="#">Link</a>
</li>
<li><a href="#">Link</a>
</li>
</ul>
</nav>
从MDN窗口。matchMedia:
返回一个新的MediaQueryList对象,该对象表示指定媒体查询字符串的解析结果。
因此,无论窗口大小是否满足媒体查询,它都会返回一个对象。
幸运的是,返回的对象包含一个"matches"属性。
尝试:
...
if(mediaTab.matches){...}
编辑:而且,这种方法只有在ie10之前才受支持。您可能需要考虑只使用window.innerWidth,然后在if语句中进行比较。
var mediaTab = window.innerWidth;
if(mediaTab < 1024){...}
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- Javascript代码添加了一些不应该存在的内容
- 有没有任何情况下,一个方法不应该是原型方法
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- Node.js Promise - 代码不应该等到 .then 完成()
- 跳跃运动:旋转轴 – 如果手静止不动,它不应该在 0 左右
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- Javascript:尝试从多个没有匹配的数组中采样,在不应该的时候循环递增
- 这个正则表达式不应该工作吗?
- 使用正则表达式删除标记时,Firefox和Chrome之间存在不一致
- 为什么不应该't我在JavaScript中使用Alert
- 如何避免隐藏不应该隐藏的部分
- 在对javascript/NodeJS应用程序进行原型设计时,应该测试什么,不应该测试什么
- 如果我不应该用流星吗;不需要反应性
- jQuery点击监听器在'It’不应该
- JavaScript排序函数排序时不应该排序
- 仅当文档存在(不在服务器上)时导入库
- Javascript插件不应该影响所有的选择框
- Javascript闭包:这个数组不应该通过getArray进行编辑
- ajax jonp 不应该适用于 请求的上不存在“访问控制-允许源”标头