最近抽空在忙小项目,总结了下一些项目中碰到的常见问题,搜集对应的实用JS代码片段,跟大家分享。
文章目录
1.产生限定范围内不重复的随机数
在深js也碰到了完全相同的问题,即抽奖程序的核心算法,结果是bug频出。这里给出js抽奖程序,大家去鄙视一下。
一种思路是在给定大小数组中每次抽取一个随机位置的数进行剔除,这个程序的问题是必须始终维护抽取的数组,好处是不会重复抽取:
var originalArray=[]; for (var i=0;i<len;i++) { originalArray[i]= i; } var getRandom = function(){ var index=Math.floor(Math.random()*originalArray.length); //随机取一个位置 var value = originalArray[parseInt(index)]; originalArray.splice(index,1); return value; }
有什么其他好方法不妨分享一下。
2. 数字保留两位小数
数字进行截断保留两位小数只想到如下方法
floatNum = Math.round(floatNum*100)/100;
但是还有情况是仅展示两位小数,这时只要用原生的API方法就可以了
floatNum.toFixed(2)
3. 触发change事件
这是在使用AmazeUI中按钮组时碰到的问题,按钮组并没有对应的js封装,所以点击div模拟的按钮并不能触发实际单选按钮的change事件,因此需要jquery来手动触发。估计Bootstrap应该有进行更好的封装吧。
$button.children().attr('checked',true).trigger("change");
这里使用children
仅是为了获得包含在外层div
下的单选按钮,还得设置check状态
4. 单选按钮选择信息获取
按钮组中究竟选择了哪一个可以使用下面代码获得
$('input[name="radio-options"]:checked').val()
5. 中文编解码
在URL中传递中文就需要进行URI编码转为16进制的数字表示
location.href = "result.html?u="+encodeURIComponent(name)+"&b="+invest_status.profit+"&r="+invest_status.rounds;
展示也得使用相应的URI函数解码进行
user = decodeURI(name);
发现不少浏览器现在已经支持直接在URL中插入中文,估计这里有些变化了。
6. 转换为数字类型
两种方法,一种是
option = parseInt(IntNumStr);
另一种是
option = Number(IntNumStr);
注意单选按钮的选择值就可以用这个方法进行转换
7. 浏览器url信息处理
主要是处理GET请求的分隔符”&”与值的获得,也就是运用.split("&")
和.split("=")
infos = url.split('&'), user = (infos[0].split('='))[1];
搜到一个大而全的处理工具
8. 网页title设置
直接给document.title
赋值即可
9. 异步加载与性能优化
promise
10.文件上传处理
window.Blob slice file
11. 多场景管理
12. 简单模板与双向绑定
使用vue库
打赏作者
抢沙发
还没有评论,你可以来抢沙发