-4

私の仕事は、javascript と jquery を使用して、ユーザーが送信した文字列を受け取り、その文字列をそのまま生成する Web ページを生成することです: abcde=>bcdea 私の問題は、プログラムを実行しようとしても出力がないことです。エラー コンソールを確認すると、rotate が定義されていないと表示されます。私はとても混乱しています。

<!doctype html>
<!-- This page demonstrates several string properties and operations -->
<!-- =============================================================== --> 

<html>
<head>  
  <title> String Demo </title> 
  <script  src="..111/js/jquery-1.9.1.min.js"></script>
  <script type="text/javascript">
    function rotate(s)
    {
      result = $('#strBox').value;              
      "rotate:" + result
      var result = "";
      for (var i = 0; i< s.length; ++i){
        result = s.substring(1) + s.charAt(0);
        $('#outputDiv').innerHTML = 
      }
    }
  </script>
  </script>
</head> 

<body> 
  <h2>String Demo</h2>  
  <p>
    Enter a string: <input type="text" id="strBox" size=20 value="">
  </p>
  <input type="button" value="Click to Process" onclick="rotate();">                   
  <hr>
  <div id="outputDiv"></div> 
</body>
</html>
4

2 に答える 2

1
function rotate(s)
{
  result = $('#strBox').value;              

グローバル変数を作成するように見えますが、それを下に宣言します。変数を最初に宣言するか、少なくとも最初に使用するときに宣言することをお勧めします。

  var result = $('#strBox').value;              

$(<selector>)jQuery オブジェクトを返します。そのオブジェクトのプロパティの値を取得してvalueいます。おそらく、選択した要素の値が必要です (要素がある場合)。jQuery は要素をラップするため、プロパティにアクセスするには関数を呼び出す必要があります。

  var result = $('#strBox').val();

.

  "rotate:" + result

空のステートメントに相当します。結果は割り当てられないため、効果はありません。

  var result = "";

ああ、厄介な宣言があります。割り当ては後で行われます。

  for (var i = 0; i< s.length; ++i){
    result = s.substring(1) + s.charAt(0);

これにより、文字ごとに文字列が 1 回ループされるため、開始時の文字列になります。

    $('#outputDiv').innerHTML = 

jQuery にはプロパティがありませんがinnerHTML、DOM オブジェクトにはあります。繰り返しになりますが、jQuery にはプロパティ アクセスを行うためのメソッドが必要です。実際に値を割り当てる必要があるため、次のようになります。

    $('#outputDiv').html(result);

また

    $('#outputDiv').text(result);
  }
}

しかし、ブラウザーは DOM を更新する前にスクリプトの実行が停止するのを待つため、何も変化が見られません (とにかくぼやけているだけでしょう)。

あなたが望むかもしれないのは次のようなものです:

<script>

function rotate(element) {
  var s = element.form.strBox.value;
  document.getElementById('outputDiv').innerHTML = s.substring(1) + s.charAt(0);
}
</script>

<form>
  <p>Enter a string: <input type="text" name="strBox" size=20 value="">
  <p><input type="button" value="Click to Process" onclick="rotate(this);">                   
</form>  
<hr>
<div id="outputDiv"></div>

フォームを使用すると、フォームの名前付きプロパティとして使用できるため、フォーム コントロールへのアクセスが容易になることに注意してください。

于 2013-03-16T02:15:33.620 に答える
0
  1. 関数「rotate」は、使用されていないパラメーターを取ります。

    関数rotate(s){

  2. 結果は、別の2行の変数として定義されていません。値はjQueryオブジェクトのプロパティではありません。

    result = $('#strBox').value;              
    
  3. テキスト「rotate:」+結果は変数に割り当てられておらず、セミコロンはありません

    "rotate:" + result
    
    var result = "";
    
  4. このループは必要ありません。文字列から最初の文字を取り出して削除し、文字列の最後に追加するだけです。

    for (var i = 0; i< s.length; ++i){
        result = s.substring(1) + s.charAt(0);
    
  5. 「innerHTML」はjQueryオブジェクトの有効なプロパティではありません。そして、値は何にも割り当てられていません。

        $('#outputDiv').innerHTML = 
    }
    

    }

于 2013-03-16T02:19:47.457 に答える