JavaScript实用代码片段

最近抽空在忙小项目,总结了下一些项目中碰到的常见问题,搜集对应的实用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];
搜到一个大而全的[处理工具](https://github.com/websanova/js-url) ## 8\. 网页title设置 直接给`document.title`赋值即可 ## 9\. 异步加载与性能优化 promise ## 10.文件上传处理

window.Blob slice
file

11. 多场景管理

12. 简单模板与双向绑定

本站总访问量