附加不适用于将文本附加到元素

时间:2014-12-25 21:44:39

标签: javascript jquery html append

与此问题类似: jQuery append fadeIn

但解决方案并不适合我。

基本上试图询问用户他们的名字,然后在下面附上问候语。 最好是在淡入淡出时,我尝试了一些我在这里遇到的解决方案,但无济于事。

" document.name_form..etc)在警报内部调用时也能正常工作。

谁能看到我出错的地方?

JSfiddle

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

(函数doit从html表单" onSubmit"触发,并成功触发警报等)

2 个答案:

答案 0 :(得分: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()来阻止提交表单。为此,我将<form>更改为:

<form name="name_form" action="" onSubmit="doit(event)">

DEMO

实际上,您append()的工作正常。你的小提琴有两个问题:

  1. 您已选择onLoad。这会导致所有代码都在window.onload函数内,因此它不在全局范围内,这是onsubmit属性中使用的函数所需要的。使用No wrap修复此问题。

  2. 您没有阻止默认提交。除了我在上面执行此操作的方式之外,您还可以通过在false中返回onsubmit来执行此操作:

    onsubmit="doit(); return false;"
    
  3. DEMO

答案 1 :(得分:0)

我认为问题是绑定onsubmit时函数doit不可用。

您可以尝试将变量声明为变量:

doit = function(){

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

顺便说一句,如果你不想提交你可以绑定的形式,而不是onsubmit