标签归档:JavaScript

js – 数学运算(取整,取余)

取整

1.取整
//保留整数部分
parseInt(3/2)  // 1
2.向上取整
// 向上取整,有小数就整数部分加1
Math.ceil(3/2)  // 2
3.四舍五入
// 四舍五入
Math.round(3/2)  // 2
4.向下取整
// 向下取整,丢弃小数部分
Math.floor(3/2)  // 1

取余

1.取余
console.log(7%4);  // 3

JS中判断某个字符串是否包含另一个字符串的五种方法

一个包解决你所有的JS问题,点击获取

String对象的方法

方法一: indexOf()   (推荐)

var str = "123"
console.log(str.indexOf("2") != -1); // true

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。

方法二:match()

var str = "123"
var reg = RegExp(/3/);
if(str.match(reg)){
//包含;
}

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

方法三: search()

var str = "123"
console.log(str.search("2") != -1); // true

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。

RegExp对象的方法

方法四: test()

var str = "123"
var reg = RegExp(/3/);
console.log(reg.test(str) != -1); // true

test() 方法用于检索字符串中指定的值。返回 true 或 false。

方法五:exec()

var str = "123"
var reg = RegExp(/3/);
if(reg.exec(str)){
//包含;
}

exec() 方法用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

如果大家想对JS有深入系统的学习,可以参阅 JavaScript核心技术开发解密 这本经典读物。

原文:https://www.jb51.net/article/139346.htm

实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)

//校验是否全由数字组成

function isDigit(s) 
{ 
var patrn=/^[0-9]{1,20}$/; 
if (!patrn.exec(s)) return false 
return true 
} 

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验用户姓名:只能输入1-30个以字母开头的字串

function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false
return true
}

//校验密码:只能输入6-20个字母、数字、下划线

function isPasswd(s)
{
var patrn=/^(w){6,20}$/;
if (!patrn.exec(s)) return false
return true
}

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”

function isTel(s)
{
//var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?(d){1,12})+$/;
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验手机号码:必须以数字开头,除数字外,可含有“-”

function isMobil(s)
{
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验邮政编码

function isPostalCode(s)
{
//var patrn=/^[a-zA-Z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)) return false
return true
}

//校验搜索关键字

function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\][]{}:;',.<>/?]{1}[^`~!@$%^&()+=|\][]{}:;',.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验是否IP地址

function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
"^\d+$"  //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-\d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?\d+$"    //整数
"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?\d+)(\.\d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url
"^[A-Za-z0-9_]*$"
// var str1 = str.replace(/[\'\"\\\/\b\f\n\r\t]/g, '');// 去掉转义字符
// var str2= str.replace(/[\-\_\,\!\|\~\`\(\)\#\$\%\^\&\*\{\}\:\;\"\L\<\>\?]/g, '');// 去掉特殊字符
// return str2;
var containSpecial = RegExp(/[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/);
return ( containSpecial.test(s) ); 判断是否含有

var filterRule= /[^0-9a-zA-Z_]/g;
var judge= filterRule.test(str); //判断传进来的数据是否含有特殊字符。test函数返回匹配结

var rows=JSON.stringify(rows);////将json对象转换成json对符串
var rows=JSON.parse(rows);//将json字符串转换成json对象

原文:https://www.jb51.net/article/33192.htm

参考:js 过滤字符 和检测 特殊字符

js去掉url链接多余参数

的时候别人可能会故意刷我们的网站链接,在后面加上参数来访问网站,例如‘http://test.codelovers.cn/?_t=1539913651’我们想实现的效果是自动去掉后缀包含?部分,实现代码如下

if(top != self){	
  top.location=self.location;
}
else{	
  var url = location.search;	
  if(url){		
    var old_url = window.location.href;		 
    var new_url = old_url.substring(0, old_url.indexOf('?'));		
    self.location = new_url;	
  }
}

javascript中 visibility和display的区别

大多数人很容易将CSS属性display和visibility混淆,它们看似没有什么不同,其实它们的差别却是很大的。

visibility属性用来确定元素是显示还是隐藏的,这用visibility=”visible|hidden”来表示(visible表示显示,hidden表示隐藏)。

当visibility被设置为”hidden”的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置。例:

<script language="JavaScript"> 
function toggleVisibility(me){
 if (me.style.visibility=="hidden"){ 
    me.style.visibility="visible"; 
  } 
  else { 
    me.style.visibility="hidden"; 
  } 
} 
</script> 

<div onclick="toggleVisibility(this)" style="position:relative">

第一行文本将会触发”hidden”和”visible”属性,注意第二行的变化。</div> <div>因为visibility会保留元素的位置,所以虽然第一行看不见了但位置还在,第二行内容不会上下移动。</div>

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

注意到,当元素被隐藏之后,就不能再接收到其它事件了,所以在第一段代码中,当其被设为”hidden”的时候,就不能再接收响应到事件了,因此也就无法通过鼠标点击第一段文本令其显示出来。

另一方面,display属性就有一点不同了。visibility属性是隐藏元素但保持元素的浮动位置,而display实际上是设置元素的浮动特征。

当display被设置为block(块)时,容器中所有的元素将会被当作一个单独的块,就像<div>元素一样,它会在那个点被放入到页面中。(实际上你可以设置<span>的display:block,使其可以像<div>一样工作。

将display设置为inline,将使其行为和元素inline一样—即使它是普通的块元素如<div>,它也将会被组合成像<span>那样的输出流。

下面看我实例的代码和效果:

<script language="JavaScript"> 
function toggleDisplay(me){ 
  if (me.style.display=="block"){ 
    me.style.display="inline"; 
    alert("文本现在是:'inline'.");
  }  
  else { 
    if (me.style.display=="inline"){ 
      me.style.display="none";  
      alert("文本现在是:'none'. 3秒钟后自动重新显示。"); 
      window.setTimeout("blueText.style.display='block';",3000,"JavaScript"); 
    } else { me.style.display="block"; alert("文本现在是:'block'."); } } } </script> 
 
<div>在<span id="blueText" onclick="toggleDisplay(this)" style="color:blue;position:relative;cursor:hand;">蓝色</span>文字上点击来查看效果.</div>

[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

最后是display被设置:none,这时元素实际上就从页面中被移走,它下面所在的元素就会被自动跟上填。(此时应用display: none;的元素相当于消失,而visibility: hidden;则只表示隐藏,位置还在。)

display 属性分别为block, inline, none 值及使用visibility: hidden;的情况调试示例:

<h1>display 属性分别为block, inline, none 值及使用visibility: hidden;的情况调试</h1> 
<P><SPAN id="oSpan" style="">This is a SPAN</SPAN> in a sentence.</P> 
<P> 
<input type=button value="Inline" onclick="oSpan.style.display='inline'"> 
<input type=button value="Block" onclick="oSpan.style.display='block'">
<input type=button value="None" onclick="oSpan.style.display='none'"> 
<input type=button value="Hidden" onclick="oSpan.style.visibility='hidden'">
<input type=button value="Visible" onclick="oSpan.style.visibility='visible'"> 
</P> 
<UL> 
  <LI>将元素设为 block,会在该元素后换行。</LI> 
  <LI>将元素设为 inline,会消除元素换行。</LI> 
  <LI>将元素设为 none,隐藏该元素内容。</LI> 
</UL>

js获取当前时间,并格式化为”yyyy-MM-dd HH:mm:ss”

function getFormatDate() {
    var date = new Date();
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    var currentDate = date.getFullYear() + "-" + month + "-" + strDate
            + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
    return currentDate;
}

//将时间戳转换成 yyyy-MM-dd HH:mm:ss

      
    //inputTime 参数是毫秒级时间戳
    formatDate(inputTime) {
        var date = new Date(inputTime);
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? ('0' + m) : m;
        var d = date.getDate();
        d = d < 10 ? ('0' + d) : d;
        var h = date.getHours();
        h = h < 10 ? ('0' + h) : h;
        var minute = date.getMinutes();
        var second = date.getSeconds();
        minute = minute < 10 ? ('0' + minute) : minute;
        second = second < 10 ? ('0' + second) : second;
        return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
      },

js 弹出确认-取消对话框

一种:

<a href="javascript:if(confirm('确实要删除该内容吗?'))location='http://www.google.com'">弹出窗口</a>

二种:

<script language="JavaScript">            
function delete_confirm(e)
{
    if (event.srcElement.outerText == "删除")
    {
        event.returnValue = confirm("删除是不可恢复的,你确认要删除吗?");
    }
}
document.onclick = delete_confirm;
</script>
<a href="Delete.aspx" onClick="delete_confirm">删除</a>

三种:

if(window.confirm('你确定要取消交易吗?')){
                 //alert("确定");
                 return true;
              }else{
                 //alert("取消");
                 return false;
             }

四种:

<!--调用方法--> 
<script language="JavaScript">             
function delete_confirm() 
{
    event.returnValue = confirm("删除是不可恢复的,你确认要删除吗?");
}
</script>

Input类型是checkbox时checked属性获取

记录一下checkbox 的 checked 属性的获取办法,以备忘记:

假如你的一个HTML页中有这么一段代码:

       <input name="chbRem" id="chbRem" type="checkbox" checked="checked"> 

那么如何通过JQuery获得chbRem的checked状态呢:

错误的写法如下:

      alert(  $("#chbRem").attr("checked")   );

正确的获取方式应该是:

      alert(  $("#chbRem")[0].checked   );

此时,会输出ture。