js如何实现时间的交叉?

JavaScript014

js如何实现时间的交叉?,第1张

<script>

function checkthis(tmp)

{

var str1=tmp

var checkvalue=str1.split(",")

//alert(checkvalue[1])

var chk=document.getElementsByName('checkn')

for (i=0 i<chk.lengthi++)

{

if (chk[i].checked &&chk[i].value!=str1)

{

chkvalue=chk[i].value.split(",")

if((checkvalue[0]<chkvalue[1]&&checkvalue[0]>chkvalue[0])||(checkvalue[1]<chkvalue[1]&&checkvalue[1]>chkvalue[0]))

{

alert(str1+" 和 "+chk[i].value+" 冲突!")

return(false)

break

}

}

}

return(true)

}

</script>

<body>

开始时间是2:00结束时间是4:00 <input type="checkbox" name="checkn" id="c1" value="2,4" onclick="return(checkthis(this.value))"><br>

开始时间是3:00结束时间是5:00 <input type="checkbox" name="checkn" id="c2" value="3,5" onclick="return(checkthis(this.value))"><br>

开始时间是4:00结束时间是6:00 <input type="checkbox" name="checkn" id="c3" value="4,6" onclick="return(checkthis(this.value))"><br>

开始时间是5:00结束时间是7:00 <input type="checkbox" name="checkn" id="c4" value="5,7" onclick="return(checkthis(this.value))"><br>

</body>

以上代码仅供参考,在我本机测试通过的。你可以修改checkbox里面的value值

(10,20)(20,30)如果只是判断有交叉的到也简单

(10,20)-的大小 20-10=10

(20,30)大小30-20=10

(10,20)(20,30)大小30-10=20

现在10+10=20,ok,他们没有交叉

验证:

(10,20)(19,30)

| |

10 11

(10+11)>(30-10)

ok他们有交叉

其实,我的想法很简单,既然是区间了,他就有个界限,你可以用他的界限来看看他是处在哪个区间,或者说是那几个区间之间。

判断(x,y)有没有跟其他的区间交叉,

如果x<10,说明他肯定没有跟(10,20)交叉,也不会跟区间左界限>10的区间交叉,

如果x>10说明他有可能跟(10,20)交叉,当然还要看y的大小了,

总之,就是比较x,y 跟几个区间界限的大小,这样就能判定他跟几个区间的交叉。

在这里,还是要好好的考虑一下怎样比较下来,比较的节省时间。

交叉合并:如字符串一为:abcd  字符串二为:1234。则结果为:a1b2c3d4。

import java. util. ArrayListimport java. util. Listpublic class A {

public static void main(string[] args){

string a[]={"a","b","c"}

string b[]={"1","2","3"}

CombineTwoArray(a,b)

system. out. println(CombineTwoArray(a,b))

}

public static List<string>combineTwoArray(string[] first, String[] second)t List<string>outlist=new ArrayList<string>()

int index=0

while(index<first. length &&index<second. length){

outlist. add(first[ index])outlist. add(second[ index])

++indexif(index>=first. length){

for (int i=indexi<second. lengthi++){

outlist. add(second[i])

}

} else{

for (int i=indexi<first. lengthi++){

outlist. add(first[i])

}

return outlist

}

}

js的写法:

<!DOCTYPE html pUBLIC"-//w3c//DTD XHTMT 1.0

Transitional//EN""http://www.w3.org/TR/xhtm11/DrD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtm1">

<head>

<title>第十五题:交叉合并字符串</title>

<style>

#form{

margin:0auto;width:500px;top:100px;height:300px;

</style>

<script type="text/javascript">

var reg="*[A-za-20-9]+$";function check(){

var strl =document.all.strl.value;var str2 =document.all.str2.value;if(str1==""){

alert(“字符串一不允许为空!");document.all.strl.focus();return;

}else if(!/^[A-2a-20-9]+$/.test(str1)){

alert("字符串一只能是数字和字母的组合");document.all.str1.focus();return;

}else if(str2==""){

alert(”字符串二不允许为空!");document.all.str2.focus();

return;

}else if(!/^[A-Za-20-9]+5/.test(str2)){

alert(“字符串二只能是数字和字母的组合");document.a1l.str2.focus();return;var string="";var font1="<font style='color:red;'>";var font2="<font style='color:blue;'>";var fontend="</font>";if(str1.1ength>=str2.1ength){

for(vari=0;i<str1.1ength;i++){

if(i<str2.length){

string +=font1+strl[i]+fontend+ font2+ str2[i]+fontend;

}else{

string+=font1+strl[il;

}else{

for(var i=0;i<str2.1ength;i++){

if(i<strl.length){

document.all.result.innerHTML=string;

</script>

</head>

<body>

<div id="form">

<center><h2>第十五题:交叉合并字符串</h2></center>

字符串1:<input type="text"id="str1"/><br/>字符串2:<input type="text"id="str2"/><br/>

<input type="button"value="交叉合并字符串”onclick="check();"/>

<br/>

<div id="result"></div>

</div>

</body></html>

string+=font1+strl[i]+fontend+font2+str2[i]+fontend;

}else{

string+=font2+str2[i]+fontend;

扩展资料:

/**

* 合并两个函数

* @param functionA 先执行

* @param functionB 执行完 functionA 后返回

* @returns {*}

*/

function mergeFunction (functionA, functionB) {

if (!functionA || !functionB) return

var merge = functionB

functionB = (function () {

merge.call(this)

functionA.call(this)

})()

return functionB = merge

}