根据上一页的用户输入,在页面加载时执行JS函数
Executing a JS function on page load, based on user input from previous page
概述:我有一个产品页面,里面有一个基于产品类名的jQuery过滤系统。我在下面提供了我的代码的一个基本示例:
// PRODUCTS PAGE FUNCTIONS
function filterAll() {
$('.download').show("slow");
$('.ourprod').show("slow");
$('.accessories').show("slow");
$('.club').show("slow");
}
function filterClubs() {
$('.download').hide("slow");
$('.ourprod').hide("slow");
$('.accessories').hide("slow");
$('.club').show("slow");
}
function filterProds() {
$('.download').hide("slow");
$('.club').hide("slow");
$('.accessories').hide("slow");
$('.ourprod').show("slow");
}
function filterAccess() {
$('.download').hide("slow");
$('.club').hide("slow");
$('.ourprod').hide("slow");
$('.accessories').show("slow");
}
function filterVideos() {
$('.accessories').hide("slow");
$('.club').hide("slow");
$('.ourprod').hide("slow");
$('.download').show("slow");
}
//HOMEPAGE FUNCTION
function loadProductsPage() {
window.location = 'products.php';
}
// PRODUCTS PAGE EVENTS
$('#filterall').click(function() {
filterAll();
});
$('#filterclubs').click(function() {
filterClubs();
});
$('#filterprods').click(function() {
filterProds();
});
$('#filteraccessories').click(function() {
filterAccess();
});
$('#filtervideos').click(function() {
filterVideos();
});
.box {
background: red;
width: 100px;
height: 100px float: left;
}
.filter a {
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<nav id="shop-filter">
<section class="container">
<div class="row">
<ul class="filter nav navbar-nav">
<li><a id="filterall">All</a>
</li>
<li><a id="filterclubs">Clubs</a>
</li>
<li><a id="filterprods">Our Products</a>
</li>
<li><a id="filteraccessories">Accessories</a>
</li>
<li><a id="filtervideos">Videos</a>
</li>
</ul>
</div>
</section>
</nav>
<div class="box club">
<h4>CLUB</h4>
<span> - $89.99</span>
</div>
<div class="box ourprod">
<h4>PRODUCT</h4>
<span> - $39.99</span>
</div>
<div class="box download">
<h4>Download</h4>
<span> - $9.95</span>
</div>
<div class="box accessories">
<h4>Accessories</h4>
<span> - $XX.XX</span>
</div>
问题:在主页上,我有一些链接,我想直接指向产品页面,但在页面加载后应用了相应的过滤器。这是主页HTML,它链接到上面的脚本:
<a id="loadclubs" href="javascript:void(0)">
<h1>Training Clubs</h1>
</a>
<a id="loadvideos" href="javascript:void(0)">
<h1>Training Videos</h1>
</a>
<a id="loadaccessories" href="javascript:void(0)">
<h1>Accessories</h1>
</a>
我是jQuery/Javascript的新手,所以如果有任何其他建议来清理我的脚本,我将不胜感激!
当您链接到下一页而不发布数据时,您需要使用某种方法来存储信息并在下一页上检索信息。然后,javascript需要读取这些内容来修改DOM。有一些方法可以做到这一点:
- 请求参数:
<a href=newpage.html?from=accessories>
,然后在下一个页面中,var req = get('from'); // == accesories
(其中req()是一个获取请求变量的函数),然后在页面加载时,通过调用适当的函数或根据需要简单地隐藏项来修改DOM
例如。
首页:<a id="loadclubs" href="item?id=123&filter=accessories">Training Clubs</h1></a>
第二页:
<script>
var filter = .....; // get the filter param
if (filter == "accessories") { filterAccess(); }
OR
if (filter == "accessories") {
$('.download').css("display", "none");
$('.club').css("display", "none");
$('.ourprod').css("display", "none");
$('.accessories').css("display", "initial");
}
</script>
localstorage:与上面的类似,但当单击链接时,将值存储到localstorage中,然后在下一页中检索它,并再次调用display函数/hide项。
请求参数和控制器方法的混合-根据请求参数,最初使用显示属性设置链接样式。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在从浏览缓存加载页面时执行javascript
- Jquery:代码在rails中的页面加载时未执行
- 如何准确执行加载脚本&退出弹出窗口
- 页面在我的javascript执行后重新加载,我不希望它这样做
- 加载服务器端渲染的React组件后执行脚本
- jQuery-在页面加载时执行一个函数
- ajax加载了内容,脚本没有执行
- 如何在加载完整页面后严格执行javascript代码
- 在动态加载的对话框中执行Javascript
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 通过AJAX加载页面并执行javascript和CSS
- 返回上一页,不加载执行正文
- 谷歌自定义搜索 - 从网址参数手动加载/执行
- jquery文档就绪侦听器与图像加载;执行顺序
- 发现jsphp加载/执行问题
- jQuery ready()是否在所有JS文件加载/执行后触发
- 如何在加载/执行页面的任何其他脚本之前将Javascript注入/执行到页面中
- 在视图页面加载执行控制器功能,angularjs方式