2016-06-08 4 views
-3

Я создал функцию с именем «show_alphabet» и назначил переменную с именем «str», строку букв алфавита в верхнем регистре. Я использовал свойство prototype объекта String для добавления метода с именем «sendArray» и назначил ему (sendArray) функцию, которая возвращает метод split(). Метод split() разделит строку алфавита. У меня также есть переменная с именем «arr», и я назначил ей метод sendArray() для «str». У меня есть кнопка, которая при нажатии будет запускать функцию show_alphabet. Функция должна отображать буквы алфавита в «str» в виде массива с периодом двоеточия, за которым следует каждая буква, и помещая каждую букву в отдельную строку. Например:Метод прототипа строки Javascript split

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> 
+0

Перед вызовом функции вы вызываете 'sendArray()'. Цикл 'for' выглядит неполным? Где определяется 'arr'? – guest271314

+0

1. удалите здесь 'String.prototype.sendArray()' скобки. 2, 'sendArray' не принимает никаких параметров –

+0

@TheReason Любите свое имя. –

ответ

-3

sendArray = function() вместо sendArray() =() функция

+2

Это всего лишь половина ответа – devnull69

+0

Yup, но он должен начать с этого. Извините, я не видел твой комментарий –

1

Хорошо, я не ожидал, что так много неполных ответов. Итак, давайте подведем итоги

  1. Определение функции прототипы sendArray не должно иметь круглые скобки
  2. Прежде всего, вам не нужна какая-либо функция sendArray прототипа (если это явно не требуют домашнего задания упражнения)
  3. You передает параметр sendArray, который вы не используете внутри функции
  4. действие submit на кнопке отправить форму и, следовательно, обновите страницу, так что вы не увидите других результатов вашего кода
  5. You нужно будет понять что нажатие кнопки будет использовать document.write, который (после того, как загружен DOM) всегда стиранию предыдущий документ, в том числе вашего сценария

Попробуйте, как это

<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> 
+0

Спасибо за это. Почему самые простые вопросы получают наихудшие ответы? – RobG

+1

@RobG - Честно говоря, этот ответ не лучше ИМО. Он все равно никогда не будет работать из-за document.write. –

+0

Вы абсолютно правы. Прошло много времени с тех пор, как я использовал document.write, поэтому я действительно забыл, насколько бесполезно это было на самом деле :-) – devnull69

1

я не мог выдержать это ужасно ответы, поэтому я был вынужден предложить правильный вариант.

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

Напомним некоторые из вопросов:

  • Вы не можете document.write после загрузки DOM. Выполнение этого обычно приведет к разочарованию. Вместо этого, как указано выше, настройте innerHtml или используйте еще дюжину других способов изменения DOM.
  • Установите кнопку как type = "button" вместо type = "submit". Это приведет к тому, что не будет выполнена реальная форма или подразумеваемая.
  • Ваша функция sendArray не имеет никакого смысла ... но также и большинство ответов. Просто создайте строку и установите ее где-нибудь, и итерация здесь просто не нужна.
+0

Довольно хороший ответ. Только один nitpick - с помощью 'String.join()' не будет ':
' после 'Z' – Nayuki

+0

Вы можете использовать * document.write * после загрузки страницы, однако последствие заключается в том, что оно заменяет весь содержание страницы. – RobG

+0

@ RobG - Конечно. Но вы когда-нибудь сталкивались с ситуацией, когда document.write на загруженной DOM был действительно полезен для чего-то? Я помню, что в 1995 году это было аккуратно, когда вышел Netscape 2. –

Смежные вопросы