【问题标题】:JS return's undefined when is checked and I change select option selected选中时JS返回未定义,我更改选择选项
【发布时间】:2013-02-04 17:58:59
【问题描述】:

我有一个 HTML 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>

当拉伸的复选框被选中,并且我更改了 select res 的选定选项时,我在 div id = "result" 中得到 undefined,我该如何解决这个问题? 在文件中,代码没有这样的';'因为复制时出错。

【问题讨论】:

  • ; 中有很多 var tamzoomw = novow;/ 200;(在 verificastretch 内)。并且checkcut 没有定义。
  • 文件中的代码没有这样的';'因为复制时出错。

标签: javascript select checkbox undefined option


【解决方案1】:

if条件之后

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

已完成,verificastretch 已正确将 span zoom 设置为 4x 3x,span zoomundefined 变量 zoom 覆盖:

        elembyid('zoom').innerHTML = zoom;

我认为您希望在 else 子句中使用该行。

您可以通过使用调试器并从函数 checkzoom 开始单步执行您的代码来发现这一点。

【讨论】:

  • 我知道可变缩放是未定义的,但我不明白为什么。与命令警报(缩放)一致,可变缩放不是无限期的。怎么这么快就下来了?我该如何解决这个错误?
  • @user2088749:由于作用域:zoomverificastretch 是另一个变量,而不是 checkzoom 中的 zoom。您可以通过在 else 子句中移动行 elembyid('zoom').innerHTML = zoom; 来修复错误,因此它不会覆盖范围 zoom,或者您可以从 verificastretch 返回缩放值。
  • 我设法通过将行更改为函数 checkzoom 并返回可变缩放函数 verificazoom 来解决。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多