gpt4 book ai didi

javascript - 无法使用 Javascript/Prototype 访问之前由 innerHTML 创建的元素

转载 作者:行者123 更新时间:2023-11-28 03:47:02 26 4
gpt4 key购买 nike

我正在使用来自 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').request({
onComplete: function(transport){
//alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});

问题是 $('akas-admin) 返回 null ,我尝试将具有此 id 的表单放入原始文档中,这有效。

问题:我能否以某种方式“重新验证”已使用 innerHTML 插入的 dom 或 access 元素?

编辑信息:document.getElementById("akas-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;
}
});
}
}
});

问题是我得到了alert('savelink clicked!'); . findelement 不返回表单。我试图将保存链接放在表格的上方和下方。两者都不起作用。我也认为这种方法有点笨拙,我做错了。谁能指出我正确的方向?

最佳答案

所以 $('akas-admin') 返回 nulldocument.getElementById("akas-admin") 没有。 $ 函数主要只是 document.getElementById 的包装器,因此它不会被分解。您是否尝试过使用 Element.extend(document.getElementById('akas-admin'))

你有没有加载任何其他库?您能在 jsFiddle 中重新创建问题吗? ?

关于javascript - 无法使用 Javascript/Prototype 访问之前由 innerHTML 创建的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com