2

私は Javascript と html の両方の知識が限られている初心者です。質問が非常に基本的なもので申し訳ありません。ボタンがクリックされたときにJavascriptを使用して配列に何かを行い、結果をページに出力する基本的なWebページを作成しようとしています。

<!DOCTYPE html>
//error here
<html>
<head>
<title>Thursday's Homework</title>
<script>
    var problem1 = function() 
    {for (var i = 0; i <= 50; i += 5) {
        document.write(i + " ");
        }
    }   
    var myArray = []
    var problem2 = function()
        {for (var i = 0; i <= 9; ++i){
            myArray[i]
            }
        document.write(myArray)     
</script>
</head>
<body>
<center><h2><b> My Homework for Thursday<b></h2></center>
<p>This is my code for Problem 1:</p>
<input type="button" onclick = "problem1()" value="Does it work?">
//error here
<p>This is my code for Problem 2:</p>
<input type="button" onclick = "problem2()" value="Does it work?">
//error here
</body>
</html>

開発者ツールを使用して Chrome でデバッグすると、次の 3 つのエラー メッセージが表示されます。 行 1 の後: Uncaught SyntaxError: Unexpected end of input ): キャッチされていない参照エラー: problem2 が定義されていません

document.write次の結果を表示するたびにページをリロードする必要があるため、出力を表示するより良い方法があるかどうかも疑問に思っています。

私は新しいので、これがこの全体を作成する完全に間違った方法である場合、私の謝罪. その場合は、正しい方向に向けてください。

更新: 構文エラーを修正し、正常に動作しています。結果を表示するためのより良い方法についてまだ疑問に思っていdocument.writeます。私はあまり知識がないので、提案があれば、それを実装する方法を教えてもらえますか?

4

4 に答える 4

2

problem2 の後に } がありません。

これが、この種のエラーの最も一般的な原因です。関数本体が適切に閉じられていないため、JS インタープリターが壊れ、解析が停止します。次に、他の何かが解析に失敗した変数/関数を参照しようとし、参照エラーをトリガーします。

于 2013-05-23T02:27:15.270 に答える
1

いくつかの問題が見られます。

  1. }の後の締めくくりがありませんproblem2
  2. =for の周りにスペースがありますonclick =
  3. 実際には myArray で何もしていません。それは意図的ではないようです。
  4. コードのフォーマットが不明確であり、後で問題が発生する可能性があります (これが部分的にバグを引き起こしたと思います)。特に正当な理由がない限り、のようなものは避けるべきです{for。代わりに、の後に改行を追加します{
于 2013-05-23T02:23:11.607 に答える
0
  1. problem2() のブレースを閉じます。
  2. document.write(); の代わりに のようなIDを指定できます

    また

そしてjsの使用で

document.getElementById("abc").innerHTML=i+" ";

より適切で安全なコーディングを行うには、jsLint を使用してください。

于 2013-05-23T02:26:33.613 に答える
0

2 番目の質問については、Chrome と Firefox の両方で、デバッグに満足できる便利な拡張機能を多数見つけることができます。

Chromeには、たとえば変数を監視できる「Webコンソール」などの内部ツールがあります。

于 2013-05-23T07:36:59.403 に答える