算24点不出结果,为啥额?求大神解释额。。感觉没错= =

w779650226 2012-12-02 03:31:11
这是所有代码了,小弟新学,所以真心找不猝错误了= =:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<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 call(val1,val2,val3,val4){
alert("fuck1");
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('+','-','*','/');
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<5;jj++){
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");
var s1;
s1=call(v1.value,v2.value,v3.value,v4.value);/*未成功调用*/
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" onchange="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>
...全文
219 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
张运领 2012-12-02
  • 打赏
  • 举报
回复
call是一个和alert这样的,算是系统函数吧。是规定作用域的,应该是这样,我也说不好,想看的话,就查一下这个吧 取值的模块,在你进行document.getElementById这个的时候,它对应id的各个属性的值就已经确定了,所以你在初始化的时候,没有值,那么你在以后如果直接用的时候,还是没有值。 所以,在对应的input的值改变之后,就必须再重新取值,重新区目标的各个属性。
Kimshuen 2012-12-02
  • 打赏
  • 举报
回复
引用 4 楼 w779650226 的回复:
引用 2 楼 Kimshuen 的回复:JavaScript code??1v4=$("v4");//v4=$("n4");你自己手误了 但还是没出结果= =
我测了下能出结果,只是你的结果没写在蓝色的地方,自己看看吧
w779650226 2012-12-02
  • 打赏
  • 举报
回复
引用 2 楼 Kimshuen 的回复:
JavaScript code??1v4=$("v4");//v4=$("n4");你自己手误了
但还是没出结果= =
w779650226 2012-12-02
  • 打赏
  • 举报
回复
引用 1 楼 zyl_lyr1019 的回复:
JavaScript code??12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899……
谢谢啊,的确能运行了,结果也是正确的。。但为什么那个init函数没有抓到值额?call函数原来存在么?我还是没明白自己问题出在哪儿。。
Kimshuen 2012-12-02
  • 打赏
  • 举报
回复
v4=$("v4");//v4=$("n4");
你自己手误了
张运领 2012-12-02
  • 打赏
  • 举报
回复
<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>
这样稍微改了一下,可以运行出结果了,但是不知道你这具体啥意思,也没有测出来是不是运行正确,自己试试

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧