本帖最后由 w779650226 于 2012-12-02 15:44:52 编辑

解决方案 »

  1.   

    <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>这样稍微改了一下,可以运行出结果了,但是不知道你这具体啥意思,也没有测出来是不是运行正确,自己试试
      

  2.   

    v4=$("v4");//v4=$("n4");你自己手误了
      

  3.   


    谢谢啊,的确能运行了,结果也是正确的。。但为什么那个init函数没有抓到值额?call函数原来存在么?我还是没明白自己问题出在哪儿。。
      

  4.   

    call是一个和alert这样的,算是系统函数吧。是规定作用域的,应该是这样,我也说不好,想看的话,就查一下这个吧
    取值的模块,在你进行document.getElementById这个的时候,它对应id的各个属性的值就已经确定了,所以你在初始化的时候,没有值,那么你在以后如果直接用的时候,还是没有值。
    所以,在对应的input的值改变之后,就必须再重新取值,重新区目标的各个属性。