Javascript字符串原型方法拆分

时间:2016-06-08 06:35:44

标签: javascript arrays string

我创建了一个名为“show_alphabet”的函数,并将其分配给名为“str”的变量,该字符串是大写字母的字母。 我已经使用String对象的prototype属性添加了一个名为“sendArray”的方法,并为此(sendArray)分配了一个返回split()方法的函数。 split()方法将拆分字母表字符串。 我还有一个名为“arr”的变量,我为它分配了“str”的sendArray()方法。 我有一个按钮,单击该按钮将运行show_alphabet函数。 该函数应该将“str”中的字母显示为一个数组,其中包含句点冒号,后跟每个字母,并将每个字母放在一个单独的行上。 例如:

A:

B:

C: ...

但是,每当我点击按钮时,都不会显示任何内容。

这是我的代码:

<form>
  <button type = "submit" value = "submit" onclick = "show_alphabet()">submit </button>
</form>
<script type="text/javascript">
  function show_alphabet() {
    var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    String.prototype.sendArray() = function() {
      return this.split("");
    }
    for (i=0; i<str.length-1; i++) {
      var arr = str.sendArray(":" + "<br />");
      document.write(arr[i]);
    }
  } 
</script>

3 个答案:

答案 0 :(得分:2)

我无法忍受这些可怕的答案,所以我觉得有必要提供一个正确的答案。

<button type="button" value="submit" onclick="show_alphabet()">submit</button>

<div id="dynamic"></div>

<script type="text/javascript">
  function show_alphabet() {
    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    document.querySelector('#dynamic').innerHtml = str.split('').join(':<br/>');
  } 
</script>

回顾一些问题:

  • 在DOM加载后你无法记录document.write。这样做通常只会让你感到沮丧。相反,如上所述,调整innerHtml或使用其他十几种方法来更改DOM。
  • 将按钮设置为类型=&#34;按钮&#34;而不是type =&#34;提交&#34;。这样做将阻止执行实际表单或隐含表单。
  • 你的sendArray功能没有任何意义......但大部分答案都没有。只需制作字符串并将其设置在某处,此处就不需要迭代了。

答案 1 :(得分:1)

好的,我没想到会看到这么多不完整的答案。所以让我们总结一下

  1. sendArray原型函数的定义不得包含括号
  2. 最重要的是,您不需要任何sendArray原型函数(除非Homework练习明确要求)
  3. 您正在将一个参数传递给sendArray,您不在函数
  4. 中使用该参数
  5. 按钮上的操作submit将提交表单,从而刷新页面,因此您不会看到代码的任何其他结果
  6. 你必须明白按下按钮会使用document.write,这将(在加载DOM之后)总是删除以前的文档,包括你的脚本
  7. 尝试这样

    <button type="button" onclick="show_alphabet()">Show alphabet</button>
    <div id="output"></div>
    <script type="text/javascript">
      function show_alphabet() {
        var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        var arr = str.split("");
        document.getElementById("output").innerHTML = arr.join(":<br/>");
      } 
    </script>
    

答案 2 :(得分:-3)

sendArray = function()而不是sendArray()= function()