在JavaScript函数中创建的DOM元素在函数返回后消失

在JavaScript函数中创建的DOM元素在函数返回后消失,javascript,spring,dom,dwr,Javascript,Spring,Dom,Dwr,我有一个允许多选的下拉列表。用户从列表中选择,然后单击submit按钮,并使用onclick=test()调用JS函数。我使用的是Jsp页面,这是一个SpringMVC框架项目,带有用于远程服务的DWR 从远程服务-dwrService返回的数据由回调函数-HandLeadDSucces处理。根据所选项目,我需要填充一个或多个文本区域。通过查看Firebug,我看到textarea显示,然后被填充,但是一旦函数test()完成,textarea就会消失。我一直在到处寻找答案,但没有结果 func

我有一个允许多选的下拉列表。用户从列表中选择,然后单击submit按钮,并使用onclick=test()调用JS函数。我使用的是Jsp页面,这是一个SpringMVC框架项目,带有用于远程服务的DWR

从远程服务-dwrService返回的数据由回调函数-HandLeadDSucces处理。根据所选项目,我需要填充一个或多个文本区域。通过查看Firebug,我看到textarea显示,然后被填充,但是一旦函数test()完成,textarea就会消失。我一直在到处寻找答案,但没有结果

function test() {
var careIDs = dwr.util.getValue("careIDs");
dwrService.getNewCares(careIDs, {
callback : handleAddSuccess,
errorHandler : handleAddError
});
}

function handleAddSuccess(data) {
    var aFragment = document.createDocumentFragment();
    var divta1 = document.getElementById("divta1");
    for (i = 0; i < data.length; i++) {
        var ta = document.createElement("textarea");
        ta.setAttribute("id", "definition"+i);
        ta.setAttribute("cols", "75");
        ta.setAttribute("rows", "75");
        divta1.appendChild(ta);
        aFragment.appendChild(divta1);
    }      
    document.body.appendChild(aFragment);

    for (i = 0; i < data.length; i++) {
       dwr.util.setValue("definition"+i, data[i].definition);
    }
alert(" end of handleAddSuccess " ) ;
}
功能测试(){
var careIDs=dwr.util.getValue(“careIDs”);
dwrService.getNewCares(careIDs{
回调:handleAddSuccess,
errorHandler:HandLeaderRor
});
}
函数handleAddSuccess(数据){
var affragment=document.createDocumentFragment();
var divta1=document.getElementById(“divta1”);
对于(i=0;i

我也从回调函数返回,情况也是一样的-我可以看到textarea元素在Firebug中设置并填充值,但一旦函数返回,textarea元素就会消失。

您不会从
test()中
返回false
,因此,当单击“提交”按钮时,表单将被提交,页面将重置为其初始状态(取决于服务器对提交的表单所做的操作)。

您在哪些浏览器上测试了代码?不要忘记在本地使用
var i
声明
i
,否则
i
将泄漏到全局范围。Marcel,我使用FireFox、IE和Chrome。我将变量更改为局部范围-tks!Marcel,我用FFox,IE和Chrome。将变量更改为本地范围-tks!为了清楚起见,您是说我应该从test()返回true,以便提交表单吗?事实上,我不想在现阶段提交整份表格。我正在做的是调用JS fn,它调用服务器上的DWR远程服务,并对页面的一部分进行刷新(很抱歉重复)。我有其他部分的网页,并将提交整个表格一起。如果我提交我的jsp页面会有帮助吗?Marcel,我只想说我按照你说的返回true,首先从test()开始,然后从回调函数fn开始。还是一样,文本区域会短暂显示。-Lin@LinAhmad:否,您应该只
返回false
,以防止表单提交。返回值
true
将提交表单并显示所描述的行为。我尝试了“返回false”-没有结果。下面是我修改过的脚本:function test(){careIDs=dwr.util.getValue(“careIDs”);alert(“careIDs len=“+careIDs.length”);