算24点不出结果,为啥额?求大神解释额。。感觉没错= = 本帖最后由 w779650226 于 2012-12-02 15:44:52 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>简单算24</title> <style> body {background-color:buttonface;} #txt_result{ background-color: #0FF; border:black solid 1px; color:white; font-weight:bold; height:20px; } </style> <script type="text/javascript"> var v1,v2,v3,v4,v5,txt_result; function $(str){return (document.getElementById(str));} function calll(val1,val2,val3,val4){ theArray0=new Array(val1,val2,val3,val4); theArray1=new Array('1234','1243','1324','1342','1423','1432','2134','2143','2314','2341','2413','2431','3124','3142','3214','3241','3412','3421','4123','4132','4213','4231','4312','4321'); theArray2=new Array('+','-','*','/'); v5 = $("v5"); a1=parseInt(v5.value); for(var ii=0;ii<24;ii++){ theArray3=theArray1[ii].split('');// for(var mm=0;mm<4;mm++){ theArray3[mm]=parseInt(theArray3[mm]); } for(var jj=0;jj<4;jj++){//应该也是4吧 for(var kk=0;kk<4;kk++){ for(var ll=0;ll<4;ll++){ ss1=theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]; if(eval(ss1)==a1){return (ss1);} ss1='('+theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+')'+theArray2[kk]+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]; if(eval(ss1)==a1){return (ss1);} ss1=theArray0[theArray3[0]-1]+theArray2[jj]+'('+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+')'+theArray2[ll]+theArray0[theArray3[3]-1]; if(eval(ss1)==a1){return (ss1);} ss1=theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+'('+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]+')'; if(eval(ss1)==a1){return (ss1);} ss1='('+theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+')'+theArray2[ll]+theArray0[theArray3[3]-1]; if(eval(ss1)==a1){return (ss1);} ss1=theArray0[theArray3[0]-1]+theArray2[jj]+'('+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]+')'; if(eval(ss1)==a1){return (ss1);} ss1=theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+'('+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]+')'; if(eval(ss1)==a1){return (ss1);} } } } } return false;} /*main调用失败,代码有错*/function main(){ alert("fuck2"); v1 = $("v1");//这样初始化化吧,否则抓不到值的。 v2 = $("v2"); v3 = $("v3"); v4 = $("v4"); //alert(v1.value+"---"+v2.value+"---"+v3.value+"---"+v4.value); s1=calll(v1.value,v2.value,v3.value,v4.value);/*未成功调用*///这个改了一下名称,最好不要覆盖掉系统自带的函数。 alert("s1="+s1);if(s1){ txt_result.innerText+='\n'+s1+'=='+v5.value; }else{ txt_result.innerText+='\n'+v1.value+','+v2.value+','+v3.value+','+v4.value+' 无结果!'; }init(); return false; } function check1(obj1){ if(isNaN(obj1.value)){ alert('请输入一个数值!'); obj1.focus(); obj1.select(); event.returnValue=false; event.cancelBubble=true; return (false); }} function clear_input(){ txt_result.innerText=""; v1.focus(); return(true); } function init(){ //alert("fuck3"); v1=$("v1"); v2=$("v2"); v3=$("v3"); v4=$("n4"); v5=$("v5"); txt_result=$("txt_result"); v1.select(); } </script> </head> <body style="overflow:auto;" onload="init();"> <form onsubmit="return main();"> <b>请输入要计算的四个数</b><br /> <input id="v1" onblur="check1(this);" /> <input id="v2" onchange="check1(this);" /><br /> <input id="v3" onchange="check1(this);" /> <input id="v4" onchange="check1(this);" /><br /> <b>请输入要计算的结果: </b><br> <input id="v5" onchange="check1(this);" value="24" /><br /> <input type="submit" value="计算" /> <input type="reset" onclick="clear_input();" value="清除结果" /> </form> <b>结果是: </b><br /> <div id="txt_result"></div> </body> </html>这样稍微改了一下,可以运行出结果了,但是不知道你这具体啥意思,也没有测出来是不是运行正确,自己试试 v4=$("v4");//v4=$("n4");你自己手误了 谢谢啊,的确能运行了,结果也是正确的。。但为什么那个init函数没有抓到值额?call函数原来存在么?我还是没明白自己问题出在哪儿。。 call是一个和alert这样的,算是系统函数吧。是规定作用域的,应该是这样,我也说不好,想看的话,就查一下这个吧取值的模块,在你进行document.getElementById这个的时候,它对应id的各个属性的值就已经确定了,所以你在初始化的时候,没有值,那么你在以后如果直接用的时候,还是没有值。所以,在对应的input的值改变之后,就必须再重新取值,重新区目标的各个属性。 js 返回错误 正则问题 firefox中cells的问题,急等!谢谢! 赠分50 Ajax异步刷新在jsp页面上将将毫秒数转换成日期格式(js实现) 请教如何实现点击按钮时在多行文本框光标处插入指定内容 关于如何定时打开和关闭新窗口 请问如何在已有的一张表中插入我想要的行数,载入时不让页面刷新,动态的往页面添加。(谢谢) 大家看看如下的程序代表什么意思撒!! index.jsp无法识别 JS文件引用出错? 请问,原型对象
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>简单算24</title>
<style>
body {background-color:buttonface;}
#txt_result{
background-color: #0FF;
border:black solid 1px;
color:white;
font-weight:bold;
height:20px;
}
</style>
<script type="text/javascript">
var v1,v2,v3,v4,v5,txt_result;
function $(str){return (document.getElementById(str));}
function calll(val1,val2,val3,val4){ theArray0=new Array(val1,val2,val3,val4);
theArray1=new Array('1234','1243','1324','1342','1423','1432','2134','2143','2314','2341','2413','2431','3124','3142','3214','3241','3412','3421','4123','4132','4213','4231','4312','4321');
theArray2=new Array('+','-','*','/');
v5 = $("v5");
a1=parseInt(v5.value);
for(var ii=0;ii<24;ii++){
theArray3=theArray1[ii].split('');//
for(var mm=0;mm<4;mm++){
theArray3[mm]=parseInt(theArray3[mm]);
}
for(var jj=0;jj<4;jj++){//应该也是4吧
for(var kk=0;kk<4;kk++){
for(var ll=0;ll<4;ll++){
ss1=theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1];
if(eval(ss1)==a1){return (ss1);}
ss1='('+theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+')'+theArray2[kk]+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1];
if(eval(ss1)==a1){return (ss1);}
ss1=theArray0[theArray3[0]-1]+theArray2[jj]+'('+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+')'+theArray2[ll]+theArray0[theArray3[3]-1];
if(eval(ss1)==a1){return (ss1);}
ss1=theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+'('+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]+')';
if(eval(ss1)==a1){return (ss1);}
ss1='('+theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+')'+theArray2[ll]+theArray0[theArray3[3]-1];
if(eval(ss1)==a1){return (ss1);}
ss1=theArray0[theArray3[0]-1]+theArray2[jj]+'('+theArray0[theArray3[1]-1]+theArray2[kk]+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]+')';
if(eval(ss1)==a1){return (ss1);}
ss1=theArray0[theArray3[0]-1]+theArray2[jj]+theArray0[theArray3[1]-1]+theArray2[kk]+'('+theArray0[theArray3[2]-1]+theArray2[ll]+theArray0[theArray3[3]-1]+')';
if(eval(ss1)==a1){return (ss1);}
}
}
}
}
return false;
}
/*main调用失败,代码有错*/
function main(){
alert("fuck2");
v1 = $("v1");//这样初始化化吧,否则抓不到值的。
v2 = $("v2");
v3 = $("v3");
v4 = $("v4");
//alert(v1.value+"---"+v2.value+"---"+v3.value+"---"+v4.value);
s1=calll(v1.value,v2.value,v3.value,v4.value);/*未成功调用*///这个改了一下名称,最好不要覆盖掉系统自带的函数。
alert("s1="+s1);
if(s1){
txt_result.innerText+='\n'+s1+'=='+v5.value;
}else{
txt_result.innerText+='\n'+v1.value+','+v2.value+','+v3.value+','+v4.value+' 无结果!';
}
init();
return false;
}
function check1(obj1){
if(isNaN(obj1.value)){
alert('请输入一个数值!');
obj1.focus();
obj1.select();
event.returnValue=false;
event.cancelBubble=true;
return (false);
}
} function clear_input(){
txt_result.innerText="";
v1.focus();
return(true);
}
function init(){
//alert("fuck3");
v1=$("v1");
v2=$("v2");
v3=$("v3");
v4=$("n4");
v5=$("v5");
txt_result=$("txt_result");
v1.select();
}
</script>
</head>
<body style="overflow:auto;" onload="init();">
<form onsubmit="return main();">
<b>请输入要计算的四个数</b><br />
<input id="v1" onblur="check1(this);" />
<input id="v2" onchange="check1(this);" /><br />
<input id="v3" onchange="check1(this);" />
<input id="v4" onchange="check1(this);" /><br />
<b>请输入要计算的结果: </b><br>
<input id="v5" onchange="check1(this);" value="24" /><br />
<input type="submit" value="计算" />
<input type="reset" onclick="clear_input();" value="清除结果" />
</form>
<b>结果是: </b><br />
<div id="txt_result"></div>
</body>
</html>这样稍微改了一下,可以运行出结果了,但是不知道你这具体啥意思,也没有测出来是不是运行正确,自己试试
谢谢啊,的确能运行了,结果也是正确的。。但为什么那个init函数没有抓到值额?call函数原来存在么?我还是没明白自己问题出在哪儿。。
取值的模块,在你进行document.getElementById这个的时候,它对应id的各个属性的值就已经确定了,所以你在初始化的时候,没有值,那么你在以后如果直接用的时候,还是没有值。
所以,在对应的input的值改变之后,就必须再重新取值,重新区目标的各个属性。