前端小功能收集

本文总阅读量

【废弃】前端渣渣收集自己用过的前端小功能

前端小功能收集

前记

这个月在做个项目,由于自己前端几乎零基础,所以是想到什么就搜什么或者做什么。以下是功能记录
ps由于使用到了uikit前端,本身提供了很多功能,能引用到的我只了解下原理,但在这里就没记录了

2017.10.18更新

搜索框自动补全

示例图
如果数据固定的就交给前端处理,数据是动态加载的就交给后端处理
部分html代码

1
2
3
4
<input type="text" id="from_station" name="from_station" placeholder="{{ from_station }}" list="list1">
<datalist id="list1">
</datalist>

js代码(结合后端(Django))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$(document).ready(function(){   
var ele_f_key = document.getElementById("from_station");
var ele_t_key = document.getElementById("to_station");
var val = ""
var html_result = ""
/*可以半自动补全车站名的*/
/*onpropertychange的话,只要当前对象属性发生改变,都会触发事件,但是它是IE专属的;
oninput是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事
件,它只在对象value值发生改变时奏效。*/
ele_f_key.oninput = function (e) {
val = $("#from_station").val();
html_result = ""
document.getElementById('list1').innerHTML =html_result;
/*判断是不是空可以防止输入拼音时自动报错*/
if (val !== ""){
url1 = "search/"+val
$.get(url1,function(result){
a = result.split(',')
$.each(a, function(i,item){
html_result += '<option>'+a[i]+'</option>'
});
document.getElementById('list1').innerHTML =html_result;
});
}
}

js代码(前端自己运行的)
前面的定义

1
2
3
4
$(document).ready(function(){   
var ele_f_key = document.getElementById("from_station");
var ele_t_key = document.getElementById("to_station");
var data = 自己定义的数据

关键部分更改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//更改为利用indexOf()判断字符串里面有关键字就是我想要的数据
ele_f_key.oninput = function (e) {
val = $("#from_station").val();
html_result = ""
document.getElementById('list1').innerHTML =html_result;
//判断是不是空可以防止输入拼音时自动报错
if (val !== ""){
for (var i = 0; i < data.length; i++) {
//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
console.log(data[i].indexOf(val))
if (val.trim().length > 0 && data[i].indexOf(val) > -1) {
html_result += '<option>'+data[i]+'</option>'
}
}
document.getElementById('list1').innerHTML =html_result;
}
}

跟随鼠标坐标弹窗

示例图

1

js代码,Django后端
主要代码在边框定位
先获取点击事件的坐标,然后进行判断,如果靠近底端就固定一个高度,最后赋值给css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$(document).ready(function(){  
{% for ticket_info in view_list %}
$('#{{ ticket_info.train_num }}').click(function(e){
var train_num = "{{ ticket_info.train_num }}";
var info = new Set();
var html_resultinfo = " "
var time = $("#time").val();
var train_no = "{{ ticket_info.train_no }}"
var t_station = "{{ ticket_info.from_station }}"
var f_station = "{{ ticket_info.to_station }}"
//边框定位
var pageX = e.pageX+20,
pageY = e.pageY-150;
var abc = document.body.clientHeight;
if (pageY>abc*0.5){
$('#train_display').css({
left: pageX,
top: abc*0.5
});
}
else{
$('#train_display').css({
top: pageY,
left: pageX
});
}
url = "time/"+time.split('-')[0]+"_"+time.split('-')[1]+"_"+time.split('-')[2]+"_"+train_no+"_"+f_station+"_"+t_station
train_display.style.display="block";
$.getJSON(url,function(ret,result){
if (ret.httpstatus == 200){
a = ret.data.data
document.getElementById('train_no').innerHTML = train_num;
document.getElementById('train_start').innerHTML = "{{ ticket_info.f_station }}";
document.getElementById('train_end').innerHTML = "{{ ticket_info.t_station }}";
$.each(a, function(i,item){
html_resultinfo += '<tr><td>' + a[i].arrive_time + '</td>' +
'<td>' + a[i].start_time + '</td>' +
'<td>' + a[i].station_name + '</td>' +
'<td>' + a[i].stopover_time + '</td>' +
'</tr>';
});
document.getElementById('ticket-tbody').innerHTML =html_resultinfo;
}
else{
document.getElementById('train_no').innerHTML = train_num;
document.getElementById('train_start').innerHTML = "";
document.getElementById('train_end').innerHTML = "";
document.getElementById('ticket-tbody').innerHTML = "暂无该列车信息"
}
});
return false;
});
{% empty %}
{% endfor %}
});

刷新后执行事件

如果需要在刷新后执行某一个操作,可以执行中低端代码
js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
//200毫秒后自动点击绑定id的按钮
setTimeout(function() {
// IE
if(document.all) {
document.getElementById("search_button").click();
}
// 其它浏览器
else {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById("search_button").dispatchEvent(e);
}
}, 200 );

随机显示

每次打开或刷新页面时出现的提示不一样
js代码

1
2
3
4
5
6
7
8
9
10
/*随机显示函数*/
function randomp(){
tips = new Array(4);
tips[0] ="如果加载不成功请刷新";
tips[1] ="工作地点可以手动选择或者输入获取";
tips[2] ="58同城的房源有少部分几率出现定位错误";
tips[3] ="到达圈仅供参考";
index = Math.floor(Math.random() * tips.length);
document.getElementById('randomp').innerHTML = "Tip:"+tips[index];
}

监听滚动条显示按钮

示例图
js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$(document).ready(function(){  
$("#go_top").hide();
$(function () {
//检测屏幕高度
//下面这段代码检测是否超过当前屏幕一页,由于增加了顶栏,所以不准,改用监控滚动
//var height=$(window).height();
//scroll() 方法为滚动事件
$(window).scroll(function(){
if ($(window).scrollTop()>50){
$("#go_top").fadeIn(500);
}else{
$("#go_top").fadeOut(500);
}
});
$("#go_top").click(function(){
$('body,html').animate({scrollTop:0},100);
return false;
});
});
});

竖分隔条

示例图
html代码

1
<div style='border:1px solid #E8E8E8;float:left;height:100%;'><!--这个div模拟一条垂直分割线--></div>
查看评论