$(‘#right_fit’).css(“display”,“block”)
console.log(“left:y right:y”)
}else if(current==1){
// 显示>>
$(‘#left_fit’).css(“display”,“none”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:n right:y”)
}else{
// 显示<<
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“none”)
console.log(“left:y right:n”)
}
}
if(count==0){
// 不显示 << 和 >>
$(‘#left_fit’).css(“display”,“none”)
$(‘#right_fit’).css(“display”,“none”)
console.log(“left:n right:n”)
}
if (count>6){
if(1<current && current<count){
// 显示<< 和 >>
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:y right:y”)
}
if (current==count){
// 显示<<
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“none”)
console.log(“left:y right:n”)
}
if (current==1){
// 显示<<
$(‘#left_fit’).css(“display”,“none”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:y right:n”)
}
}
}
控制方块数字的变化
这里我使用3个函数来对其进行控制:
1.function fit_left() , 点击左边 << 会影响数字变化
2.function fit_right() 点击左边 >> 会影响数字变化
3.function fit_number() 点击数字方块会影响数字变化
下面是他们具体的代码:
function fit_left():
function fit_left(){
var i=0,j=0
if (current>1){
current-=1
/*因为要获取最新的current,所以需要调用该函数
(first_number和last_number的获取依赖current值)*/
get_first_last_Number()
console.log(“first_number=”+first_number+" "+“last_number=”+last_number)
// 对每个数字减1
for(i=first_number;i<=last_number;i++){
$(“div.pageing ul li a[class=‘number’]”)[j].innerHTML=i
j++
}
}else {
console.log(“第一个数字=1”)
return
}
}
function fit_right():
function fit_right(){
var i=0,j=0
//第一个和最后一个数字依赖于当前的页面,所以前面要进行调用
if (current<count){
current+=1
/*因为要获取最新的current,所以需要调用该函数
(first_number和last_number的获取依赖current值)*/
get_first_last_Number()
console.log(“first_number=”+first_number+" "+“last_number=”+last_number)
for(i=first_number;i<=last_number;i++){
$(“div.pageing ul li a[class=‘number’]”)[j].innerHTML=i
j++
}
}else {
console.log(“最后一个方块的数字=”+count+“–不能再+了”)
return
}
}
function fit_number():
function fit_number(){
var i=0,j=0
/用于获取最新的first_number 和 last_number/
get_first_last_Number()
for(i=first_number;i<=last_number;i++){
$(“div.pageing ul li a[class=‘number’]”)[j].innerHTML=i
j++
}
}
对数字的变化控制关键步骤
我的最多展示6个小方块。很容易我们可以知道,这6个方块的都是连续的,差值=1。所以我只要知道第一个方块的数字和最后一个方块的数字即可。然后通过for循环遍历那些展示的方块即可得改变每个方块得数字。所以这里我使用一个函数来得到:first_number 和 last_number.该函数为:function get_first_last_Number()
function get_first_last_Number()
/特别注意:一定要对情况分析详尽,不然会出问题/
function get_first_last_Number(){
if(count>6 && count<=getDataCount()){
if(current>=4 && current<=8){
first_number=current-3
last_number=first_number+5
}
if(current>=1 && current<=3){
first_number=1
last_number=6
}
}
if(count>=1 && count<=6){
first_number=1
last_number=count
}
}
触发事件的代码
1.左点击<<
/因为这里调用前面的函数,所以代码量较少/
$(‘#left_fit’).click(function (){
fit_left()
controL_R(current,count) // 因为要获取最新的current,所以这行必须放在上面那句的后面
setBackground()
console.log(“current=”+current)
})
2.右点击>>
$(‘#right_fit’).click(function (){
fit_right()
controL_R(current,count)
setBackground()
console.log(“current=”+current)
})
3.数字方块点击
$(“div.pageing ul li a[class=‘number’]”).click(function (e){
// 对分页下的a标签添加一个点击事件
var re = /1+.?[0-9]*/;//判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/
// 如果a标签的值不是数字的话
if (!re.test(e.target.innerHTML)) {
}else{
/因为元素的值为string,需要转换为int类型才可以进行传递,不然会出问题/
current=parseInt(e.target.innerHTML)
// 2.点击小方块的数字
fit_number()
// 因为fit_number()会影响current的变化,所以 controL_R()要放在它下面
controL_R(current,count)
}
/* 因为setBackground()控制颜色变化是由current控制,
所以它需要获取最新的current值,所以放在最后*/
setBackground()
console.log(“current=”+current)
})
小方块背景颜色的控制
思路:先获取当前展示的数字方块,然后将它们的颜色变为原来的颜色,最后将方块值=current的方块颜色标记为pink。即可实现。代码如下:
/*特别注意:
因为setBackground()控制颜色变化是由current控制,
所以它需要获取最新的current值,所以放在事件函数的最后*/
function setBackground(){
// 对所有数字方块的颜色恢复到原色 白色
$(“div.pageing ul li a[class=‘number’]”).each(function (index,ele){
$(this).css(“background-color”,“white”)
})
$(“div.pageing ul li a[class=‘number’]”).each(function (index,ele){
if(parseInt(ele.innerHTML)==current){
$(this).css(“background-color”,“pink”)
}
})
}
页面实现代码(使用jstl动态控制)
-
一共20条数据,每页条
当前为第页
-
<%-- 如果展示的数据不为空–%>
<%–
<%-- 循环展示数字方块
var:为当循环的值 将每个循环变量保存在item中
${applicationScope.get(‘pageNum’)}
count=${applicationScope.get(‘totalPageNum’)}
current:代表当前页,初始化为1(如果有数据的话)
–%>
<c:if test=“${applicationScope.get(‘totalPageNum’)>0}”>
<c:if test=“${applicationScope.get(‘totalPageNum’)>6}” var=“totalPageNum”>
<c:forEach var=“item” begin=“1” end=“6”>
- ${item}
</c:forEach>
</c:if>
<c:if test=“${applicationScope.get(‘totalPageNum’)<=6}” var=“totalPageNum”>
<c:forEach var=“item” begin=“1” end=“${totalPageNum}”>
- ${item}
</c:forEach>
</c:if>
</c:if>
-
还有一点特别注意:一定要对这些变量初始化。比如:first_number、last_number、current 等。!!!!!。。。。
// 对分页进行控制
var first_number=0
var last_number=0
var current=1 // 初始化当前页面为第1页
var count=getDataCount()//总的页数
// 1.控制<<和>>的显示 影响<< 和 >> 变化的因素:1.点击<<和>> 2.点击小方块的数字
function controL_R(current,count){
if(count>=1 && count<=6){
if(current>1 && current<6){
// 显示<< 和 >>
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:y right:y”)
}else if(current==1){
// 显示>>
$(‘#left_fit’).css(“display”,“none”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:n right:y”)
}else{
// 显示<<
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“none”)
console.log(“left:y right:n”)
}
}
if(count==0){
// 不显示 << 和 >>
$(‘#left_fit’).css(“display”,“none”)
$(‘#right_fit’).css(“display”,“none”)
console.log(“left:n right:n”)
}
if (count>6){
if(1<current && current<count){
// 显示<< 和 >>
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:y right:y”)
}
if (current==count){
// 显示<<
$(‘#left_fit’).css(“display”,“block”)
$(‘#right_fit’).css(“display”,“none”)
console.log(“left:y right:n”)
}
if (current==1){
// 显示<<
$(‘#left_fit’).css(“display”,“none”)
$(‘#right_fit’).css(“display”,“block”)
console.log(“left:y right:n”)
}
}
}
// 初始化当前页小方块的颜色
$(“div.pageing ul li a[class=‘number’]:first”).css(“background-color”,“pink”)
// 获取页面所展示数据 总的页数 这里必须和servletContext中 key=totalPageNum的数量一样
function getDataCount(){
Vue 面试题
1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?
…
算法
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- 冒泡排序
- 选择排序
- 快速排序
- 二叉树查找: 最大值、最小值、固定值
- 二叉树遍历
- 二叉树的最大深度
- 给予链表中的任一节点,把它删除掉
- 链表倒叙
- 如何判断一个单链表有环
- 给定一个有序数组,找出两个数相加为一个目标数
…
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666
?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?
…
[外链图片转存中…(img-XH26WZzu-1714642945128)]算法
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- 冒泡排序
- 选择排序
- 快速排序
- 二叉树查找: 最大值、最小值、固定值
- 二叉树遍历
- 二叉树的最大深度
- 给予链表中的任一节点,把它删除掉
- 链表倒叙
- 如何判断一个单链表有环
- 给定一个有序数组,找出两个数相加为一个目标数
…
[外链图片转存中…(img-MUhXUGLf-1714642945130)]
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666
0-9 ↩︎