Javascript 从堆栈函数调用变量时出现意外标记() 问题
将多个函数堆叠在一起并尝试从彼此访问变量时,console返回未捕获的SyntaxError:意外标记( ================================================== 解释功能 $(window).load(function(){)以同时加载所有函数。是否正确使用了此选项 函数切换选项卡内容:从设置函数中获取导航链接ID,并根据变量currentNavSection的数据属性(数据侧栏选项卡)切换主包装器节,变量currentNavSection在转到函数中声明(在转到中解释) 功能设置:获取当前点击的导航链接的ID(父项),作为海豚的导航元素,突出显示图标:活动和悬停,并具有根据偏移滑动的侧边框。(在AnimateOrder中解释) 函数animateBorder:使用函数currentNavElement,从设置函数确定边框的偏移量。因此,Javascript 从堆栈函数调用变量时出现意外标记() 问题,javascript,jquery,function,variables,Javascript,Jquery,Function,Variables,将多个函数堆叠在一起并尝试从彼此访问变量时,console返回未捕获的SyntaxError:意外标记( ================================================== 解释功能 $(window).load(function(){)以同时加载所有函数。是否正确使用了此选项 函数切换选项卡内容:从设置函数中获取导航链接ID,并根据变量currentNavSection的数据属性(数据侧栏选项卡)切换主包装器节,变量currentNavSection在转到函数
var navPosition=$(currentNavElement).offset()
。结果存储在名为navPosition的变量中。然后,名为navBorder的变量确定导航元素(链接的父元素)的偏移量不能具有CSS Top属性0
然后根据导航元素的偏移量(y),使用CSS属性“top”移动导航边界
函数goto:获取当前节的活动$(this),然后通过“#”+组合它
从功能设置中单击导航上的id
编辑代码从@Dante开始跟进
$(document).ready(function() {
setup(function(currentNavElement){
toggleTabContent(currentNavElement);
goto(currentNavElement);
animateBorder(currentNavElement);
alert(currentNavElement)
});
});
function toggleTabContent(currentNavElement) {
$("[data-sidebar-tab]").each(function(navPosition, currentNavSection) {
$(currentNavSection).data("sidebar-tab") === currentNavElement ? $(currentNavSection).show() : $(currentNavSection).hide()
})
};
function setup(cb) {
$(document).delegate(".nav-element a", "click", function() {
cb($(this).attr("id"));
})
};
function animateBorder(currentNavElement) {
var navPosition = $(currentNavElement).offset(),
navBorder = !!(navPosition && navPosition.top >= 0) && navPosition.top;
if (!1 === navBorder) return !1;
$("#nav-border").css('top', navBorder)
};
function goto(currentNavElement) {
var currentNavSection = $("#"),
currentNavSectiona = $("#" + currentNavElement + " a");
};
.load()
触发事件时执行该函数。加载all映像后,将立即调用处理程序。此外,该方法在1.8中被弃用,并在3.0版jQuery中被删除。有关它的更多信息,请参阅此处-
首先,我建议您在DOM就绪时使用.ready()
函数来处理事件
$(document).ready(function() {
// Run code
});
第二个时刻,正如注释中提到的,function(){}
它不是一个对象。您应该声明这个函数以及何时使用它
$(document).ready(function() {
toggleTabContent(el);
});
function toggleTabContent(currentNavElement) {
// Code here
};
您可以使用的另一个变体:
$(document).ready(function() {
var methods = {
toggleTabContent: function() {
// Code here
}
};
methods.toggleTabContent();
});
在这个变体中,我们使用函数toggleTabContent
声明对象方法。然后调用它方法。toggleTabContent()
关于你可以在这里阅读的对象的更多信息-嗯,你试图定义你的ToggletaContent
就像它在一个对象中一样,但它不是。它在一个函数中。这是一个对象,是的,但这是无效的语法。var scope={method1:function(){}
是有效的。function(){method1:function(){}
无效。{}
对于不同的结构有不同的用途。@Taplar Okay在$(window).load(function(){)中添加了一个对象。我应该声明该对象,还是在没有对象的情况下可以使用其他方法来工作函数?函数是这样堆叠的,`function toggleTabContent(currentNavElement){$(“[数据侧栏选项卡]”)。每个(函数(navPosition,currentNavSection){$(currentNavSection).数据(“侧栏选项卡”)===currentNavElement?$(currentNavSection).show():$(currentNavSection).hide()},`如果声明的函数在$(文档)之外,则准备就绪(函数(){}调用它们的位置?好的,按照您的建议。我已将它们分隔为`$(document).ready(function(){toggleTabContent();setup()animateBorder()goto()})`以及它们后面的函数。我的问题是,在调用它们的时候,我应该把它们放在什么地方?它们已经从函数内部调用了,比如函数toggleTabContent(currentNavElement){}和函数animateBorder(currentNavElement){}。这是正确的还是我遗漏了什么?@NTAuro,你的函数setup()
应该返回currentNavElement
,因为现在你的函数是空的,它不会返回任何东西。一种方法是使用回调函数。使用cb()实现
你可以在这里看到,所以我按照你的建议做了。当我单击导航元素a链接时,作为未定义值的警报输出仍然是错误的。此外,功能是否按预期正确链接在一起?请检查导航栏和内容部分之间设置的示例HTML部分(适用于切换TabContent和navborder以从“显示:无”更改为“块”和“幻灯片”)
$(document).ready(function() {
toggleTabContent(el);
});
function toggleTabContent(currentNavElement) {
// Code here
};
$(document).ready(function() {
var methods = {
toggleTabContent: function() {
// Code here
}
};
methods.toggleTabContent();
});