2012-01-26 149 views
3

我的代码在我的电脑上,我的所有浏览器(包括IE)都能正常工作,但我无法设法使它在jsFiddle上工作。为什么我不能让这个工作代码的jsFiddle?

的问题似乎是:

window.onload=function(){ 
     document.body.innerHTML+=brd+log; 
    } 

但我既没有在window.onload尝试。我完全不知所云,我开始失去所有希望

CSS(可选):

 *{margin:0;padding:0;} 
     #brd{margin:15px auto;} 
     #brd,#brd td,#log{border:1px solid #000;} 
     #brd td{height:47px;width:45px;text-align:center;font-size:30px;} 
     #brd span{font-size:12px;} 
     #log{margin:15px auto;padding:20px;width:385px;max-height:150px;overflow:auto;background:#F0F0F0;color:#000;} 

的JavaScript:

 var i,sdk,rem,log,perf,brd,bxes=[["11","12","13","21","22","23","31","32","33"],["14","15","16","24","25","26","34","35","36"],["17","18","19","27","28","29","37","38","39"],["41","42","43","51","52","53","61","62","63"],["44","45","46","54","55","56","64","65","66"],["47","48","49","57","58","59","67","68","69"],["71","72","73","81","82","83","91","92","93"],["74","75","76","84","85","86","94","95","96"],["77","78","79","87","88","89","97","98","99"]]; 

     /*Array Find*/ 
     function arrFind(fnd,frm,bol){ 
      var ii,len,rtn=-1; 

      for(ii=0,len=frm.length;ii<len;ii++){ 
       if(frm[ii]==fnd){ 
        rtn=ii; 
        break; 
       } 
      } 
      return bol?rtn>-1:rtn; 
     } 

     /*To RC*/ 
     function toRC(val){ 
      var ii,len,aa=[]; 

      val=val.split(","); 

      for(ii=0,len=val.length;ii<len;ii++){ 
       aa.push(Math.ceil((parseInt(val[ii])+1)/9)+""+((parseInt(val[ii])%9)+1)); 
      } 

      return aa.join(","); 
     } 

     /*To AV*/ 
     function toAV(rc){ 
      var ii,len,aa=[]; 

      rc=rc.split(","); 

      for(ii=0,len=rc.length;ii<len;ii++){ 
       aa.push((((parseInt(rc[ii].charAt(0))-1)*9)+(parseInt(rc[ii].charAt(1))-1))+""); 
      } 

      return aa.join(","); 
     } 

     /*Get Box*/ 
     function getBox(av,bol){ 
      var ii,jj,len,ss,zz,aa=[]; 

      if(!bol){ 
       av=toRC(av); 
      } 

      av=av.split(","); 

      for(ii=0,len=av.length;ii<len;ii++){ 
       ss=av[ii]; 
       for(jj=0;jj<9;jj++){ 
        zz=window.bxes[jj]; 
        if(arrFind(ss,zz,true)){ 
         aa.push(zz); 
         break; 
        } 
       } 
      } 

      return aa.join(","); 
     } 

     /*Get Row*/ 
     function getRow(av,bol){ 
      var ii,len,ss,aa=[]; 

      if(!bol){ 
       av=toRC(av); 
      } 

      av=av.split(","); 

      for(ii=0,len=av.length;ii<len;ii++){ 
       ss=av[ii].charAt(0); 
       aa.push(ss+"1",ss+"2",ss+"3",ss+"4",ss+"5",ss+"6",ss+"7",ss+"8",ss+"9"); 
      } 

      return aa.join(","); 
     } 

     /*Get Column*/ 
     function getCol(av,bol){ 
      var ii,len,ss,aa=[]; 

      if(!bol){ 
       av=toRC(av); 
      } 

      av=av.split(","); 

      for(ii=0,len=av.length;ii<len;ii++){ 
       ss=av[ii].charAt(1); 
       aa.push("1"+ss,"2"+ss,"3"+ss,"4"+ss,"5"+ss,"6"+ss,"7"+ss,"8"+ss,"9"+ss); 
      } 

      return aa.join(","); 
     } 

     /*Get Value*/ 
     function getVal(av,bol){ 
      var ii,len,ss,aa=[]; 

      if(bol){ 
       av=toAV(av); 
      } 

      av=av.split(","); 

      for(ii=0,len=av.length;ii<len;ii++){ 
       ss=window.sdk[parseInt(av[ii])]; 
       if(ss.length==1){ 
        aa.push(ss); 
       } 
      } 

      return aa.join(","); 
     } 

     /*Get Candidates*/ 
     function getCand(av,bol){ 
      var ii,len,ss,zz,aa=["1","2","3","4","5","6","7","8","9"]; 

      if(bol){ 
       av=toAV(av); 
      } 

      if(window.sdk[parseInt(av)].length==1){ 
       return []; 
      } 

      zz=getVal(getBox(av)+","+getRow(av)+","+getCol(av),true).split(","); 

      for(ii=0,len=zz.length;ii<len;ii++){ 
       ss=arrFind(zz[ii],aa); 
       if(ss>-1){ 
        aa.splice(ss,1); 
       } 
      } 

      return aa.join(","); 
     } 

     /*New Sudoku*/ 
     function newSudoku(str){ 
      var ii,len,ss; 

      window.perf=new Date().getTime(); 
      window.log=""; 
      window.sdk=[]; 
      window.rem=[]; 

      for(ii=0,len=str.length;ii<len;ii++){ 
       ss=str.charAt(ii); 
       if(ss!="0"){ 
        window.log+=ss+" on "+toRC(ii+"")+"<br>"; 
        writeNumber(ss,ii+"");//wn 
       }else{ 
        window.sdk[ii]=[]; 
        window.rem.push(ii+""); 
       } 
      } 
     } 

     /*Write Number*/ 
     function writeNumber(val,av,bol){ 
      if(bol){ 
       av=toAV(av); 
      } 

      window.sdk[parseInt(av)]=[val]; 
      return delCand(val,av); 
     } 

     /*Delete Candidates*/ 
     function delCand(val,av,bol){ 
      var ii,jj,len,jen,ss,zz,cc,xx,xo,dd=[]; 

      if(bol){ 
       av=toAV(av); 
      } 

      zz=toRC(av); 

      xx=new RegExp(","+zz+",","g");//below bol 

      ss=toAV((getBox(av)+","+getRow(av)+","+getCol(av)).replace(xx,",").replace(zz+",","").replace(","+zz,"")).split(","); 

      for(ii=0,len=ss.length;ii<len;ii++){ 
       cc=window.sdk[ss[ii]]; 
       if(!cc||cc.length<2){ 
        continue; 
       } 
       zz=arrFind(val,cc); 
       if(zz>-1){ 
        window.sdk[parseInt(ss[ii])].splice(zz,1); 
        if(window.sdk[parseInt(ss[ii])].length==1){ 

         window.log+=window.sdk[parseInt(ss[ii])][0]+" on "+toRC(ss[ii])+"<br>"; 
         xo=delCand(window.sdk[parseInt(ss[ii])][0],ss[ii]);//wn 

         jen=xo.length; 
         if(jen>0){ 
          for(jj=0;jj<jen;jj++){ 
           dd.push(xo[jj]); 
          } 
         } 
         dd.push(ss[ii]); 
        } 
       } 
      } 
      return dd; 
     } 

     /*Delete Remaining*/ 
     function delRem(arr){ 
      var ii,len,ss; 

      for(ii=0,len=arr.length;ii<len;ii++){ 
       ss=arrFind(arr[ii],window.rem); 
       if(ss>-1){ 
        window.rem.splice(ss,1); 
       } 
      } 
     } 

     /*Solve Sudoku*/ 
     function solSudoku(){ 
      var ii,jj,ll,yy,len,jen,ss,zz,cc,dd,xo; 

      for(ll=0;ll<1;ll++){ 

       dd=[]; 
       for(ii=0,len=window.rem.length;ii<len;ii++){ 

        zz=window.sdk[parseInt(window.rem[ii])]; 

        if(zz.length==0){ 
         ss=getCand(window.rem[ii]).split(","); 

         if(ss.length==1&&ss[0]!=""){ 

          window.log+=ss[0]+" on "+toRC(window.rem[ii])+"<br>"; 
          xo=writeNumber(ss[0],window.rem[ii]);//wn 

          jen=xo.length; 
          if(jen>0){ 
           for(yy=0;yy<jen;yy++){ 
            dd.push(xo[yy]); 
           } 
          } 
          dd.push(window.rem[ii]); 

          ll=-1; 
         }else{ 
          if(ss.length>1){ 
           window.sdk[parseInt(window.rem[ii])]=ss; 
          } 
         } 
        }else if(zz.length==1){ 
         alert("solSudoku warning"); 
         dd.push(window.rem[ii]); 
        } 
       } 
       delRem(dd); 
      } 
      if(window.rem.length!=0){ 
       //failed to solve by simple solving 
       //start advanced solving 
      } 
     } 

     //============================================================================ 

     newSudoku("032060007000008290000509000000300016800000002610002000000405000045800000700010530"); 

     solSudoku(); 
     //000124039007093056390000200040708000008050400000201060005000078270980300980517000 
     //032060007000008290000509000000300016800000002610002000000405000045800000700010530 


     //delCand("5","55",true); 

     //alert("["+sdk.join("][")+"]"); 

     log+="--- Time: "+(new Date().getTime()-perf)+" milliseconds ---"; 

     brd="<table id=\"brd\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr>"; 

     for(i=0;i<sdk.length;i++){ 
      if(i%9==0){ 
       if(i!=0&&i!=80){ 
        brd+="</tr><tr>"; 
       } 
      } 
      if(sdk[i].length==0){ 
       brd+="<td>&nbsp;</td>"; 
      } 
      if(sdk[i].length==1){ 
       brd+="<td>"+sdk[i]+"</td>"; 
      } 
      if(sdk[i].length>1){ 
       brd+="<td><span>"+sdk[i].join(" ")+"</span></td>"; 
      } 
     } 

     brd+="</tr></tbody></table>"; 
     log="<div id=\"log\">"+log+"</div>"; 

     window.onload=function(){ 
      document.body.innerHTML+=brd+log; 
     } 

回答

8

它工作正常,看here

PS:您应该选择no wrap (head)选项。

+0

哇,谢谢。但是你做了什么? – mithril333221

+0

@ mithril333221看到我的编辑。 – xdazz

7

如果您查看jsFiddle的源代码,您将看到所有javascript已包装在window.onload函数中。

外的window.onload函数被调用后,内部功能将无法执行,因为该文件已加载:

window.onload=function(){ 
    window.onload=function(){ 
     // this code will never get executed. 
    } 
} 
相关问题