使用Velocity.js时发生JavaScript ES6错误
JavaScript ES6 error using Velocity.js
我尝试使用Velocity.js来制作菜单按钮动画。代码使用jQuery运行得很好,但现在我试图只使用JavaScriptES6,但我遇到了一个错误。
我的HTML内容是这样的:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Hamburger 2</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<hc-hamburger role="button">
<a class="McButton" data="hamburger-menu">
<b></b>
<b></b>
<b></b>
</a>
</hc-hamburger>
<script src="velocity.min.js"></script>
<script src="hamburger.js"></script>
</body>
</html>
我的JavaScript内容:
'use strict';
class HCHamburger extends HTMLElement {
get menuButton() {
if (!this._menuButton) {
this._menuButton = this.querySelector("[data=hamburger-menu]");
}
return this._menuButton;
}
get bar() {
if (!this._bar) {
this._bar = this.querySelectorAll('b');
}
return this._bar;
}
attachedCallback() {
this.menuButton.addEventListener('click', _ => {
this.menuButton.classList.toggle("active");
let McBar1 = this.bar[0];
let McBar2 = this.bar[1];
let McBar3 = this.bar[2];
if (this.menuButton.classList.contains("active")) {
McBar1.velocity({ top: "50%" }, {duration: 200, easing: "swing"});
McBar3.velocity({ top: "50%" }, {duration: 200, easing: "swing"})
.velocity({rotateZ:"90deg"}, {duration: 800, delay: 200, easing: [500,20] });
this.menuButton.velocity({rotateZ:"135deg"}, {duration: 800, delay: 200, easing: [500,20] });
} else {
this.menuButton.velocity("reverse");
McBar3.velocity({rotateZ:"0deg"}, {duration: 800, easing: [500,20] })
.velocity({ top: "100%" }, {duration: 200, easing: "swing"});
McBar1.velocity("reverse", {delay: 800});
}
});
}
}
document.registerElement('hc-hamburger', HCHamburger);
当我点击我的按钮时,我会出现以下错误:Uncaught TypeError: McBar1.velocity is not a function
正如我之前所说的,这段代码使用jQuery和一个经典的选择器:
var McBar1 = $('b:nth-child(1)');
我想我在获取McBar1内容时遇到了问题,因为当我记录它时,我只有<b></b>
,而没有整个对象。。。
我们必须使用jQuery来获取选择,querySelector是不够的。
相关文章:
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- 在Javascript ES6 Map中获取或设置元素
- Javascript ES6消除了'这'关键字在类中无处不在
- Javascript ES6共享类变量
- Javascript ES6 的属性和支持值命名约定
- 为什么javascript ES6 Promises在解析后继续执行
- 如何将javascript ES6 repo编译输出导入其他repo
- 在JavaScript ES6中使用if-else
- javascript ES6类/方法范围
- JavaScript ES6:测试箭头函数、内置函数、常规函数
- Javascript ES6 Generators
- JavaScript es6 从另一个类调用静态函数
- 如何在 Javascript ES6 中向类添加方法
- Strava-V3 和 Javascript es6 生成器 = 不兼容
- 忽略 JavaScript/ES6 中缺少的祖先 JSON 对象键
- JavaScript ES6 承诺在 while 循环中调用异步操作
- Javascript ES6 中的静态构造函数
- JavaScript ES6 'const a = {}' 是可变的.为什么
- 如何在解决所有javascript ES6 Promises后运行
- 我真的需要在javascript ES6类中使用setter/getter吗