Append не работает для добавления текста к элементу

Аналогично этому вопросу: jQuery append fadeIn

Но решение для меня не работает.

В основном пытается спросить у пользователя свое имя, а затем добавить приветствие ниже. Предпочтительно, когда я начинаю исчезать, я пробовал несколько решений, которые я нашел здесь, но безрезультатно.

"Document.name_form..etc" отлично работает при вызове внутри предупреждения.

Может ли кто-нибудь увидеть, где я ошибаюсь?

JSfiddle

function doit() {
 $('#item2').append( document.name_form.fname.value +"U WOT"); 
}

(Функция doit запускается из html-форм "onSubmit" и успешно запускает предупреждения и т.д.)

2 ответа

.append() следует использовать для добавления новых элементов DOM. Чтобы добавить текст к существующему элементу, используйте .text.

function doit(e) {
 e.preventDefault();
 $('#item2').text( function(i, oldtext) {
 return oldtext + $("form[name=name_form] input[name=fname]").val()+"U WOT";
 });
}

Вы также должны использовать preventDefault() чтобы предотвратить preventDefault() формы. Чтобы соответствовать этому, я изменил

на:

DEMO

На самом деле, ваш append() работает. У вас были две проблемы в вашей скрипке:

  1. Вы выбрали onLoad. Это заставляет весь код находиться внутри функции window.onload, поэтому он не был в глобальной области, что необходимо для функций, используемых в атрибутах onsubmit. Использование No wrap исправляет это.

  2. Вы не препятствовали отправке по умолчанию. Помимо того, что я сделал это выше, вы также можете сделать это, просто вернув false в onsubmit:

    onsubmit="doit(); return false;"

DEMO


Я думаю, проблема в том, что функция doit недоступна, когда вы связываете onsubmit.

Вы можете попытаться объявить doit как переменную:

doit = function(){

http://jsfiddle.net/otnn848g/2/

кстати, если вы не хотите представить действительно форму, которую вы можете привязать onclick вместо onsubmit

licensed under cc by-sa 3.0 with attribution.