2013-02-19 88 views
0

我有一個HTML JS代碼時的不確定:JS返回被選中,我改變選擇選項選擇

<form action="/resize" method="GET" name="resolutionForm"> 
<select name="res" id="res" onchange="checkzoom(this.value); checkcut('centercropcheck')"> 
    <option value="original"> Original</option><option value="800x600">800x600</option> 
</select> 
<input type="checkbox" id="stretchcheck" name="stretch" onclick="verificastretch(this.id);">Esticar 
<div id="results"> 
    <span>original: </span> 
    <span>200x200</span> 
    <span>zoom: </span> 
    <span>0x</span> 
    <span id="zoom">0x</span></span> 
</div> 
</form> 
<script type="text/javascript"> 
function elembyid(id){ 
    return document.getElementById(id); 
} 
function checkzoom(v){ 
    if(v == '200x200' || v == 'original'){ 
     var zoom = '0x'; 
    }else{ 
     if(elembyid('stretchcheck').checked){ 
      verificastretch('stretchcheck'); 
     }else{ 
      var novow = Number(v.substr(0,v.lastIndexOf("x"))); 
      var novoh = Number(v.substr(v.lastIndexOf("x") +1, v.length)); 
      //alert('novow'+novow+'novoh'+novoh); 
      var tamzoomw = novow/200; 
      var tamzoomh = novoh/200; 
      if(tamzoomw < tamzoomh){ 
       var zoom = (tamzoomw.length > 3? tamzoomw.toFixed(2) : tamzoomw)+'x'; 
      }else{ 
       var zoom = (tamzoomh.length > 3? tamzoomh.toFixed(2) : tamzoomh)+'x'; 
      } 
     } 
     elembyid('zoom').innerHTML = zoom; 
    } 
} 
function verificastretch(id){ 
    var v = elembyid('res').value; 
    if(v == '200x200' || v == 'original'){ 
     checkzoom(v); 
    }else{ 
     if(elembyid(id).checked){ 
      //alert('aqui'); 
      var novow = Number(v.substr(0,v.lastIndexOf("x"))); 
      var novoh = Number(v.substr(v.lastIndexOf("x") +1, v.length)); 
      //alert('novow'+novow+'novoh'+novoh); 
      var tamzoomw = novow/200; 
      var tamzoomh = novoh/200; 
      var zoom = (tamzoomw.length > 3? tamzoomw.toFixed(2) : tamzoomw)+'x '+(tamzoomh.length > 3? tamzoomh.toFixed(2) : tamzoomh)+'x'; 
      alert(zoom); 
      elembyid('zoom').innerHTML = zoom; 
     }else{ 
      checkzoom(v); 
     } 
    } 
} 
</script> 

當拉伸的複選框被選中,我改變選擇資源的選擇的選項,我得到了一個未定義的div id =「result」,我該如何解決這個問題? 在文件中,代碼沒有這樣的';'因爲複製時發生錯誤。

+0

在'var tamzoomw = novow;/200;'(在'verificastretch'內)有'''。而'checkcut'沒有被定義。 – 2013-02-19 21:45:13

+0

在文件中,代碼沒有這樣的';'因爲複製時發生錯誤。 – user2088749 2013-02-19 23:17:39

回答

0

後,如果條件

 if(elembyid('stretchcheck').checked){ 
      verificastretch('stretchcheck'); 
     }else{ 
      … 
     } 

結束,verificastretch已正確設置跨度zoom4x 3x,跨度zoomundefined變量zoom覆蓋:

 elembyid('zoom').innerHTML = zoom; 

我想你想的是在else子句中。

您可能已經通過使用調試器並從函數checkzoom開始逐步完成代碼。

+0

是的第一個。 – user2088749 2013-02-19 23:23:07

+0

我知道變量縮放是未定義的,但我不明白爲什麼。根據命令alert(zoom),變量zoom不是無限的。爲什麼它很快就會關閉?我該如何解決這個錯誤? – user2088749 2013-02-19 23:29:32

+0

@ user2088749:由於範圍的限制:'verificastretch'內的'zoom'是'checkzoom'中的另一個變量,而不是'zoom'。你可以通過在else子句中移動elembyid('zoom')。innerHTML = zoom;'來修正錯誤,所以它不會覆蓋'zoom'範圍,或者你可以從'verificastretch'返回縮放值。 – 2013-02-20 11:08:27