javascript - 自定义函数未在“if”语句中运行
问题描述
我是 Javascript/jQuery 以及 Stack Overflow 的新手,所以如果我犯了一些大错,请不要生我的气。我正在使用 Bootstrap 3.3.7 处理 HTML 页面,并且我有一个分页按钮组,它通过添加或删除“隐藏”类来切换某些元素的可见性。我在js中制作了一些自定义函数来做到这一点,问题是这些函数在通过单击按钮调用它们时可以正常工作,但是当我尝试将它们放在“if”语句中时它们就不行了。我已经尝试在语句中添加一个简单的“警报”,以查看它是否正常工作,但功能没有运行。
有人可以向我解释我错过了什么吗?下面是我的代码:
HTML
<!--pagination-->
<div id="pag-gal">
<div class="btn-group" role="group" aria-label="btngrp">
<button type="button" class="btn btn-default" id="pi">
<span class="glyphicon glyphicon-chevron-left"></span>
</button>
<button type="button" class="btn btn-default attivo" id="p1">1</button>
<button type="button" class="btn btn-default" id="p2">2</button>
<button type="button" class="btn btn-default" id="p3">3</button>
<button type="button" class="btn btn-default" id="pa">
<span class="glyphicon glyphicon-chevron-right"></span>
</button>
</div>
</div>
<!--switching divs-->
<div id="sob1" class="sob"></div>
<div id="sob2" class="sob hide"></div>
<div id="sob3" class="sob hide"></div>
</div>
JavaScript/jQuery
<script type="text/javascript">
$(document).ready(function(){
function pag1(){
return function(){
$('#p1').addClass('attivo');
$('#p2').removeClass('attivo');
$('#p3').removeClass('attivo');
$('#sob1').removeClass('hide');
$('#sob2').addClass('hide');
$('#sob3').addClass('hide');
};
};
function pag2(){
return function(){
$('#p2').addClass('attivo');
$('#p1').removeClass('attivo');
$('#p3').removeClass('attivo');
$('#sob2').removeClass('hide');
$('#sob1').addClass('hide');
$('#sob3').addClass('hide');
};
};
function pag3(){
return function(){
$('#p3').addClass('attivo');
$('#p1').removeClass('attivo');
$('#p2').removeClass('attivo');
$('#sob3').removeClass('hide');
$('#sob2').addClass('hide');
$('#sob1').addClass('hide');
};
};
$('#p1').click(pag1());
$('#p2').click(pag2());
$('#p3').click(pag3());
$('#pi').click(function(){
if($('.attivo').is('#p1')){
alert("The statement is true"); //This is working
pag3(); //this is not
};
if($('.attivo').is('#p2')){
pag1(); //nor this
};
if($('.attivo').is('#p3')){
pag2(); //or this
};
});
$('#pa').click(function(){
if($('.attivo').is('#p1')){
pag2();
};
if($('.attivo').is('#p2')){
pag3();
};
if($('.attivo').is('#p3')){
pag1();
};
});
});
</script>
当我单击#p* 按钮时,当我单击#pi 或#pa 时,pag* 功能正在工作,但它们却不是。
解决方案
您正在函数内部返回函数,因此请尝试调用 page3()(); 即 var i=page3();i();
你在 dom 上操作,所以不需要 return function 。只写逻辑,不返回任何函数值
推荐阅读
- c# - .NETFramework Omnisharp Linux
- javascript - react js组件中的返回错误或三元运算符
- html - 如何制作 div 元素的图案
- barcode - 将 Pharmacode 添加到 PyZbar
- python - SQL 数据仅获取一次
- google-cloud-platform - 在 Dataproc 上运行的 Flink 作业未找到 Google 应用程序默认凭据
- android - 如何更改某个区域的图像视图的透明度?
- python - 使用python(或任何其他简单方法)检索openstack容器对象列表
- javascript - 来自后端的数据在 html 页面中不可见
- google-cloud-platform - Google Cloud 组织权限 - 尽管拥有所有者身份,但仍被阻止表单启动共享 VPC