JavaScript/jQuery动画错误:未捕获的语法错误:意外的令牌}
JavaScript / jQuery animate error: Uncaught SyntaxError: Unexpected token }
我这里有一个函数,可以切换打开/关闭div:
function searchAnimate(goTo) {
if (goTo == "open") {
$("#searchdiv").animate({
bottom: 2,
right: 0
}, 1500);
document.getElementById("openclosearrow").innerHTML = "<div onclick='searchAnimate('close')' id='openclosearrow'>↔</div>";
}
if (goTo == "close") {
$("#searchdiv").animate({
bottom: -45,
right: -218
}, 1500);
document.getElementById("openclosearrow").innerHTML = "<div onclick='searchAnimate('open')' id='openclosearrow'>↔</div>";
}
}
错误为未捕获的SyntaxError:意外的令牌}。我试过很多方法来修复它,但我想我的眼睛今天就是不工作了。。。有人能帮忙吗?Thx!
附言:如果有帮助的话,我正在使用Chrome。
编辑
这是HTML代码:
<div onclick="searchAnimate('close')" id="openclosearrow">↔</div>
要添加的元素的HTML中有引号。
此外,看起来您正试图通过设置元素的innerHTML
来替换它。这也是行不通的。
您只需要该元素上的一个处理程序,以及某种标记来指示它处于什么状态。处理程序可以使用它来知道点击是应该打开还是关闭。
也许是这样的:
<div id='openclosearrow' class='open'>↔</div>
然后,在JavaScript:中
$('#openclosearrow').click(function() {
var arrow = this, $arrow = $(arrow),
animations = {
open: { bottom: 2, right: 0 },
close: { bottom: -45, right: -218 }
};
$('#searchdiv').animate(animations[ $arrow.is('.open') ? 'close' : 'open' ], 1500);
$arrow.toggleClass('open');
});
有更好的方法可以做到这一点,DOM和jQuery的混合是个坏主意,选择一种方法使其成为标准。
代码的一个问题是引号是错误的,它们需要转义
"<div onclick='"searchAnimate('open')'" id='openclosearrow'>↔</div>"
这里的问题是,您正在用相同的代码替换元素的innerHTML,因此在第一次替换之后,它看起来像这样
<div onclick="searchAnimate('close')" id="openclosearrow"><div onclick="searchAnimate('close')" id="openclosearrow">↔</div></div>
我怀疑那是你想要的。
您应该做的是替换事件处理程序。
$("#openclosearrow").off("click").on("click",function(){ searchAnimate('open') });
更好的方法是不替换单击处理程序,而是检测状态。
function searchAnimate() {
var stateSettings,
newState,
elem = $("#searchdiv");
if (elem.data("state")==="open") {
newState = "close";
stateSettings = {
bottom: 2,
right: 0
};
} else {
newState = "open";
stateSettings = {
bottom: -45,
right: -218
}
}
elem.data("state",newState).animate(stateSettings, 1500);
}
相关文章:
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery AJAX Post方法错误(语法错误)
- 如何“;修复解析错误:语法错误,意外'{'in”用于php
- 错误:错误:语法错误,无法识别的表达式:
- 未捕获错误:语法错误,无法识别的表达式:ajaxsample/update_agenda(CodeIgniter)
- 未捕获错误:语法错误,无法识别表达式Jquery选择器单引号与双引号
- Javascript ( jQuery ) 错误: 语法错误: 缺少 ) 在参数列表之后
- 错误:语法错误:令牌“”,“”是意外的标记
- 未捕获的错误:语法错误,无法识别的表达式:输入:复选框[名称=ninja_forms_field_57[术语]]
- 未捕获的错误:语法错误,无法识别的表达式:“.b-brand-box”
- 未捕获的错误:语法错误,无法识别的表达式:href
- ReactJS 返回解析器错误语法错误:在 AJAX 调用 JAVA servlet 后出现意外的标记 a
- jQuery:未捕获错误:语法错误,无法识别的表达式
- j查询错误 - 语法错误:缺少:在属性 ID 之后
- 在使用 Gulp 在 javascript 中声明对象时,在 Git bash 中出现以下错误“语法错误:意外标识符”
- 获取未捕获错误:语法错误、无法识别的表达式
- 获取错误语法错误:属性列表 url 后缺少 }:http://localhost/mcportal/public/pos
- 为什么我收到错误“语法错误:非法字符”
- 未捕获错误:语法错误,无法识别的表达式