【问题标题】:Can anybody help me in the following Javascript code? I'm not able to get the output [duplicate]任何人都可以在以下 Javascript 代码中帮助我吗?我无法获得输出[重复]
【发布时间】:2017-08-08 15:52:33
【问题描述】:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <script>
    var arr = new Array(1, 10, 8, 56, 12, 45);
    document.getElementById("srt").innerHTML = arr;

    function asc() {
      arry.sort(function(a, b) {
        return a - b;
      })
      document.getElementById("srt").innerHTML = arr;
    }

    function desc() {
      arry.sort(function(a, b) {
        return b - a;
      })
      document.getElementById("srt").innerHTML = arr;
    }
  </script>
</head>

<body bgcolor="aqua">
  <div>
    <h4>Click the button to sort the Array.</h4>
  </div>

  <div><input type="button" onclick="asc()" value="Ascending"></div>
  <div><input type="button" onclick="desc()" value="Descending"></div>

  <div>
    <h4><span id="srt"></span></h4>
  </div>
</body>

</html>

请检查我的 javascript 代码。我认为我在某个地方出错了。当我点击按钮时,排序后的数组没有显示出来。

【问题讨论】:

  • 问题是您试图在呈现之前访问元素。尝试将代码包装在 load(window.addEventListener('load', function(){ // your code here })) 事件中或在最后加载资源
  • 还有一个错字。 arry.sort?应该是arr.sort
  • 这不是更正和回答@Rajesh lol :) :)
  • @user7417866 我不想再辩论了。回答拼写错误是完全错误。您可以进行复仇投票(like few),但我准备好公开这一点以增加一些纪律。请记住这是我们的门户,我们必须管理它
  • @Rajesh 即使我不感兴趣,是你开始的伙计..如果你在谈论纪律,你应该知道,它总是从你开始......

标签: javascript html


【解决方案1】:

正如 Rajesh 所指出的,您应该在 html 正文的末尾定义您的 javascript,或者将 javascript 代码包装到一个结构中,该结构将在页面加载并准备好时调用。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
</head>

<body bgcolor="aqua">
  <div>
    <h4>Click the button to sort the Array.</h4>
  </div>

  <div><input type="button" onclick="asc()" value="Ascending"></div>
  <div><input type="button" onclick="desc()" value="Descending"></div>

  <div>
    <h4><span id="srt"></span></h4>
  </div>

  <script>
    var arr = new Array(1, 10, 8, 56, 12, 45);
    document.getElementById("srt").innerHTML = arr;

    function asc() {
      arr.sort(function(a, b) {
        return a - b;
      })
      document.getElementById("srt").innerHTML = arr;
    }

    function desc() {
      arr.sort(function(a, b) {
        return b - a;
      })
      document.getElementById("srt").innerHTML = arr;
    }
  </script>  
</body>

</html>

【讨论】:

  • 感谢您的信任,但如果您在其他答案上阅读 cmets,则回答错误。我会要求你删除你的答案。
  • 抱歉,我不知道哪个部分是错误的。上面的代码只是工作?
  • 之所以出错,是因为任何对拼写错误的更正都像是邀请帮我调试。其次,您的回答不会增加任何价值,因为如果 OP 看到控制台,这个错误可能已经解决。所以这样的问题不应该存在,但 OP 将无法删除,因为有答案。因此,您应该发表评论以通知 OP,但不要回答。
  • 如果您还有其他疑问,请随时询问。 :-)
  • 当我的声望达到 50 时,我可能更喜欢发表评论 :)
【解决方案2】:

js代码中除了错别字没有任何错误(没有为arry定义任何东西)。

问题是您在 DOM 准备好之前加载脚本。

在这种情况下,document.getElementById 将不起作用,因为该元素不存在于 DOM 中

var arr = new Array(1, 10, 8, 56, 12, 45);
document.getElementById("srt").innerHTML = arr;

function asc() {
  arr.sort(function(a, b) {
    return a - b;
  })
  document.getElementById("srt").innerHTML = arr;
}

function desc() {
  arr.sort(function(a, b) {
    return b - a;
  })
  document.getElementById("srt").innerHTML = arr;
}

您可以在 DOM 准备好时加载代码或使用window.onload

<body>
 ../Rest of the code
<script>
    // js code
</script>
</body>

如果您仍想在标头中加载代码,请使用

`window.onload` = function() {
   // your code
};

您可以探索的另一个选项是DOMContentLoaded

<script>
  document.addEventListener("DOMContentLoaded", function(event) {
    // your code here
  });
</script>

DEMO

【讨论】:

  • 你真的应该回答一个印刷错误吗?
  • 让这个答案出现在这里。让人们知道有一些表演者因为格式问题而拒绝投票。
  • 格式问题?所以你看到一个印刷问题,不要投票关闭并回答它。请告诉我们这个问题会给门户添加什么?我没有反对任何人。是的,我对缺少解释投了反对票,但这是为了鼓励添加解释,一旦添加,我就会撤回我的投票。也不要辩论,但回答错字是错误的
  • @brk 他可能认为回答是错误的,但对打字错误的评论是正确的,他自己已经评论过打字错误和更正大声笑:)
  • 我不知道是否有些人如此盲目以至于看不到这一行'问题是您在 DOM 准备好之前加载脚本。在这种情况下 document.getElementById 将不起作用,因为该元素不存在于 DOM' 中。即使在格式化之前,这些行也是可见的。对他们来说,这不是解释。我认为这些台词来自一些奇幻故事。是的,最好不要辩论。成熟度不是可以从市场购买的东西。谢谢
猜你喜欢
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多