生成一个字符串,每次单击都会旋转一个字母?

时间:2013-03-16 01:42:08

标签: javascript jquery string

我的任务是使用javascript和jquery生成一个网页,该网页采用用户提交的字符串并生成该字符串:abcde => bcdea我的问题是,当我尝试运行程序时,没有输出。我检查错误控制台,它说旋转没有定义。我很困惑。

<!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>

2 个答案:

答案 0 :(得分: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);

这将为每个字符循环一次字符串,因此您最终会得到您开始使用的字符串。

    $('#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>

请注意,使用表单可以更轻松地访问表单控件,因为它们可用作表单的命名属性。

答案 1 :(得分:0)

  1. 函数“rotate”接受一个未使用的参数。

    功能旋转 {

  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 = 
    }
    

    }