【问题标题】:Javascript doesn't seems to be runningJavascript 似乎没有运行
【发布时间】:2014-01-04 22:43:16
【问题描述】:

好的,我一直在努力让它工作超过 30 分钟。

在这个 jsfiddle 中一切正常:- http://jsfiddle.net/6KT4R/1/

但是当我在本地 wamp 服务器上运行它时..似乎什么都没有发生!

代码:-

<script src="js/jquery-1.8.2.min.js" type="text/javascript">
    </script>
<script type="text/javascript">
var inputLtc = document.getElementById('input-ltc'),
    inputBtc = document.getElementById('input-btc');

var constantNumber = 0.022632;

inputLtc.onkeyup = function () {
    var result = parseFloat(inputLtc.value) * constantNumber;
    inputBtc.value = !isNaN(result) ? result : '';
};
</script>

<input type="text" name="ltc" id="input-ltc">
<input type="text" name="btc" id="input-btc" readonly>

这里可能有什么问题? 谢谢。

【问题讨论】:

  • 不使用 jQuery 为什么还要包含它?
  • 您的脚本在 HTML 被解析之前执行。将脚本移到 HTML 下方。

标签: javascript


【解决方案1】:

脚本在加载 DOM 之前执行。试试:

window.onload = function(){
    var inputLtc = document.getElementById('input-ltc'),
    inputBtc = document.getElementById('input-btc');

    var constantNumber = 0.022632;

    inputLtc.onkeyup = function () {
        var result = parseFloat(inputLtc.value) * constantNumber;
        inputBtc.value = !isNaN(result) ? result : '';
    };
}

正如 m59 所建议的,有一种改进的方法来执行事件 onload。首选以下代码sn -p:

   var funct = function(){
        var inputLtc = document.getElementById('input-ltc'),
        inputBtc = document.getElementById('input-btc');

        var constantNumber = 0.022632;

        inputLtc.onkeyup = function () {
            var result = parseFloat(inputLtc.value) * constantNumber;
            inputBtc.value = !isNaN(result) ? result : '';
        };
    }

    if (window.attachEvent){
       window.attachEvent('onload', funct);
    }else{
       element.addEventListener('load', funct, false);
    }

【讨论】:

  • 或者只是将脚本移动到文档的末尾。
  • 值得注意的是element.eventwindow.onload等已经过时,最好使用element.addEventListener。你有很高的代表,我并不是说有任何冒犯,但我认为你的回答推荐最佳实践会很好。对于像你这样的代表,你的建议很重要。
  • 很好的阅读主题:stackoverflow.com/questions/6902033/…
  • m59 感谢您的建议,我已经更新了答案。我不会冒犯您的评论,但我会说每个人都不可能知道有关某个主题的所有内容。我的工作涉及广泛的技术,因此很难跟上最新和最伟大的技术。这就是我在 StackOverflow 上回答问题的原因之一。比起赞成票,我更欣赏反对票(有解释)和 cmets(比如你的),因为我从他们身上学到了很多东西。感谢您的建议,我以后会使用这种方法。
  • @KevinBowersox 不错,伙计!这是一种很棒的态度。两者都+1 :)
【解决方案2】:

在页面上存在元素之前,您将获得元素引用。在 jsfiddle 中,javascript 在 html 之后执行。您可以通过将您的脚本标签移动到相关 html 下方来重现这一点。最好将所有脚本标签放在正文末尾之前,如下所示:

  <script></script>
</body>

否则,您需要注册一个事件侦听器来监视页面加载并执行您的 javascript 代码。

window.addEventListener('load', function() {
  console.log('loaded!');
});

使用 jQuery:

$(document).ready(function() {
  console.log('loaded!');
});

//this is the jQuery shorthand for the same function above
$(function() {
  console.log( "loaded!" );
});

【讨论】:

  • 谢谢..我会从下次开始处理这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2021-11-27
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多