无法使用Javascript/Prototype访问以前由innerHTML创建的元素
我正在使用ajax请求的内容设置div的innerHTML变量:无法使用Javascript/Prototype访问以前由innerHTML创建的元素,javascript,html,prototypejs,Javascript,Html,Prototypejs,我正在使用ajax请求的内容设置div的innerHTML变量: new Ajax.Request('/search/ajax/allakas/?ext_id='+extid, { method:'get', onSuccess: function(transport){ var response = transport.responseText || "no response text"; $('admincovers_content').inner
new Ajax.Request('/search/ajax/allakas/?ext_id='+extid,
{
method:'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
$('admincovers_content').innerHTML=response;
},
onFailure: function(){ alert('Something went wrong...') }
});
回复文本包含一个表格:
<form id="akas-admin" method="post" action="/search/ajax/modifyakas/">
<input type="text" name="formfield" value="i am a form field"/>
</form>
问题是$'akas-admin返回null,我试图将带有此id的表单放在原始文档中,这是可行的
问题:我是否可以以某种方式重新验证用innerHTML插入的dom或access元素
编辑信息:document.getElementByIdakas-admin.submit工作正常,问题是我不想重新加载整个页面,而是通过ajax发布表单并在回调函数中获取响应文本
编辑:
根据提供的答案,我将执行请求的函数替换为以下观察员:
Event.observe(document.body, 'click', function(event) {
var e = Event.element(event);
if ('aka-savelink' == e.identify()) {
alert('savelink clicked!');
if (el = e.findElement('#akas-admin')) {
alert('found form to submit it has id: '+el.identify());
el.request({
onComplete: function(transport){
alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});
}
}
});
问题是我得到了“savelink clicked!”警报。findelement不返回表单。我试图将保存链接放在表单的上方和下方。两者都不起作用。
我还认为这种方法有点笨拙,我做错了。有人能给我指出正确的方向吗?试试使用;因为表单是在加载DOM后添加的。试试这个:
$akas admin.live'request',函数{
//在这里做你的事}
希望这有帮助。尝试使用;因为表单是在加载DOM后添加的。试试这个:
$akas admin.live'request',函数{
//在这里做你的事}
希望这有帮助。当你听到蹄声时,想想马而不是斑马。你真的有一个id为“admincovers\u content”的元素吗?当你听到蹄声时,想想马而不是斑马。确实有id为“admincovers\u content”的元素吗?因此$'akas-admin'返回null,但document.getElementByIdakas-admin不返回。$函数基本上只是document.getElementById的包装器,所以这种情况很少见。您是否尝试过使用Element.extenddocument.getElementById'akas-admin' 您是否加载了其他库?您可以在中重新创建问题吗?因此$'akas-admin'返回null,但document.getElementByIdakas-admin不返回。$函数基本上只是document.getElementById的包装器,所以这种情况很少见。您是否尝试过使用Element.extenddocument.getElementById'akas-admin'
您是否加载了其他库?您能在中重新创建问题吗?document.getElementByIdakas admin.submit如何?@Shadow Wizard-效果很好!但是我想提交usintajax并在回调中获取响应文本。这似乎是一个原型问题。@Joe你说你想提交表单,所以看不出有任何理由不使用纯JavaScript。。除非您还需要其他内容?@Shadow Wizard我不想离开/重新加载当前页面,但要用javascript保存sumbmission请求的响应文本。@Joe哦,对不起,我以为您的意思是真正的提交。不熟悉prototype.js,但作为最后手段,您可以切换到jQuery,在那里我知道这样做是可行的。document.getElementByIdakas admin.submit呢?@Shadow Wizard-很好!但是我想提交usintajax并在回调中获取响应文本。这似乎是一个原型问题。@Joe你说你想提交表单,所以看不出有任何理由不使用纯JavaScript。。除非您还需要其他内容?@Shadow Wizard我不想离开/重新加载当前页面,但要用javascript保存sumbmission请求的响应文本。@Joe哦,对不起,我以为您的意思是真正的提交。不熟悉prototype.js,但作为最后手段,您可以切换到jQuery,我知道在那里这些东西可以工作。看起来很有希望!但这是jquery。原型中有类似的东西吗?这篇文章回答了你的问题:谢谢!我试着去做,但没能成功。我把我的密码贴到了答案上,你能看一下吗?看起来很有希望!但这是jquery。原型中有类似的东西吗?这篇文章回答了你的问题:谢谢!我试着去做,但没能成功。我把我的代码发布到了答案中,你能看一下吗?OP说$'akas-admin'返回null,这会在尝试检索'admincovers_content'之前破坏脚本。OP说$'akas-admin'返回null,这会在尝试检索'admincovers_content'之前破坏脚本。这看起来非常非常有希望!我要试试看!这看起来非常非常有希望!我要试试看!
Event.observe(document.body, 'click', function(event) {
var e = Event.element(event);
if ('aka-savelink' == e.identify()) {
alert('savelink clicked!');
if (el = e.findElement('#akas-admin')) {
alert('found form to submit it has id: '+el.identify());
el.request({
onComplete: function(transport){
alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});
}
}
});