无法使用Javascript/Prototype访问以前由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

我正在使用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').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;
            }
        });
      }
  }
});