<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
</head>
<body>
<div>
<div>ip:<input id="ip" type="text" value="192.168.30.5"/></div>
<div>子网掩码:<input id="netMask" type="text" value="255.255.255.0" /></div>
<div>输入范围(必须在ip和mac相与的网段之间):<input type="text" id="addValue"/></div>
<div><button id="btnClick">点击</button></div>
</div>
</body>
<script type="text/javascript">
$("#btnClick").on("click",function(){
var resultIp = $("#ip").val().split(".");//IP地址
var resultMask = $("#netMask").val().split(".");//子网掩码
var resultAddValue=$("#addValue").val().split(".");//输入IP地址范围
// console.log('resultIp',resultIp);
// console.log('resultMask',resultMask);
// console.log('resultAddValue',resultAddValue);
//将输入IP范围转换成整数
var resultAddValueNumber = Number(resultAddValue[0])*256*256*256 + Number(resultAddValue[1])*256*256 + Number(resultAddValue[2])*256 +Number(resultAddValue[3]);
// console.log('resultAddValueNumber',resultAddValueNumber);
var subNet = [];//ip地址与子网掩码相与的网段结果
for (var i = 0, num = resultIp.length; i < num; i++) {
var c = parseInt(resultIp[i]) & parseInt(resultMask[i]);
subNet.push(c);
}
subNet = subNet.join(".");
// console.log(subNet);
var subNetResult = subNet.split(".");
// console.log('subNetResult',subNetResult);
//限制输入范围在相与结果网段,最低位为1-255,将其转换成整数
var ipLeftNumber = Number(subNetResult[0])*256*256*256 + Number(subNetResult[1])*256*256 + Number(subNetResult[2])*256 +Number(1);
var ipRightNumber = Number(subNetResult[0])*256*256*256 + Number(subNetResult[1])*256*256 + Number(subNetResult[2])*256 +Number(255);
// console.log('ipLeftNumber',ipLeftNumber);
// console.log('ipRightNumber',ipRightNumber);
if($("#addValue").val() != ""){
//如果输入IP,判断在不在范围内
if (resultAddValueNumber < ipLeftNumber || resultAddValueNumber > ipRightNumber){
console.log('超出IP网段范围');
}else{
console.log('成功');
}
}
})
</script>
</html>
js实现ip地址和子网掩码功能计算,并判断指定ip地址是否在网段之间
于 2020-05-06 14:56:36 首次发布