Javascript 如何从其他函数的事件侦听器访问动态创建的dom元素值

Javascript 如何从其他函数的事件侦听器访问动态创建的dom元素值,javascript,Javascript,我用javascript动态创建表单元素,因为我不能使用html表单,因为它在页面上变成静态的。单击后,我想从另一个函数触发事件处理,但那里什么也没有发生 HTML表单将不起作用,因为此表单是在用户每次调用时创建的,它是每个视频帧下的注释框 函数createCommentForm{ var fc=document.createElementform; fc.setAttribute'name',formC; var it=document.createElementinput;//输入元素,文本

我用javascript动态创建表单元素,因为我不能使用html表单,因为它在页面上变成静态的。单击后,我想从另一个函数触发事件处理,但那里什么也没有发生

HTML表单将不起作用,因为此表单是在用户每次调用时创建的,它是每个视频帧下的注释框

函数createCommentForm{ var fc=document.createElementform; fc.setAttribute'name',formC; var it=document.createElementinput;//输入元素,文本 it.setAttribute'type',text; it.setAttribute'name',注释; var ib=document.createElementinput;//输入按钮,按钮 ib.setAttribute'type',提交; ib.setAttribute'name',btnC; ib.setAttribute'value',添加注释; ib.onclick=函数{ 返回错误 };//单击时不转到其他页面 fc.childit; fc.b; document.getElementByIddiv3.appendChildfc; } 函数addCommenturlX{ 创建评论形式; var btnC=document.getElementByIdbutton; btnC.addEventListenerclick,函数{ var cmt='data='+urlX+'.txtbreakpoint'+document.getElementByIdcomment.value; //save.php文件中的$\u POST必须根据需要以某种方式传递数据 var xmlhttp=新的XMLHttpRequest; var response=document.createElementp; document.getElementByIddiv3.appendChildresponse; xmlhttp.onload=函数{ response.innerHTML=xmlhttp.responseText; } xmlhttp.openPOST,ssave.php,true; xmlhttp.setRequestHeaderContent-type,application/x-www-form-urlencoded; xmlhttp.sendcmt; console.logcmt+'2'; //document.getElementById'formC'.reset;//清除表单字段 }; }
您正在按id搜索一个名为comment的元素,但您的元素的名称为comment。更改选择器可以解决此问题

但是,您的代码应该稍微修改一下。如果您不打算通过传统的submit按钮在任何地方提交数据,请不要仅使用submit按钮来取消sumbit事件。而是使用常规按钮

而且,代码可以现代化

函数createCommentForm{ var fc=document.createElementform; fc.name=formC; var it=document.createElementinput; it.type=文本; it.name=注释; var ib=document.createElementinput; ib.type=按钮; ib.name=btnC; ib.value=添加注释; ib.addEventListenerclick,函数{ var cmt='data='+it.value+'.txtbreakpoint'+document.querySelector[name=comment].value; //save.php文件中的$\u POST必须根据需要以某种方式传递数据 var xmlhttp=新的XMLHttpRequest; var response=document.createElementp; document.getElementByIddiv3.appendChildresponse; xmlhttp.onload=函数{ response.innerHTML=xmlhttp.responseText; } xmlhttp.openPOST,ssave.php,true; xmlhttp.setRequestHeaderContent-type,application/x-www-form-urlencoded; xmlhttp.sendcmt; console.logcmt+'2'; //document.getElementById'formC'.reset;//清除表单字段 }; fc.childit; fc.b; document.getElementByIddiv3.appendChildfc; } 创建评论形式; 您试图使用此id按钮获取ElementById,但您甚至没有将其设置为created按钮

var btnC = document.getElementById("button");
                                    ^
按如下方式设置id:

看看这个代码片段 函数createCommentForm{ var fc=document.createElementform; fc.setAttribute'name',formC; var it=document.createElementinput;//输入元素,文本 it.setAttribute'type',text; it.setAttribute'name',注释; var ib=document.createElementinput;//输入按钮,按钮 ib.setAttribute'type',提交; ib.setAttribute'name',btnC; ib.setAttribute'value',添加注释; ib.id='按钮'; ib.onclick=函数{ 返回错误 };//单击时不转到其他页面 fc.childit; fc.b; document.getElementByIddiv3.appendChildfc; } 函数addCommenturlX{ 创建评论形式; var btnC=document.getElementByIdbutton; btnC.addEventListenerclick,函数{ console.log'Ajax调用!' /* var cmt='data='+urlX+'.txtbreakpoint'+document.getElementByIdcomment.value; //save.php文件中的$\u POST必须根据需要以某种方式传递数据 var xmlhttp=新的XMLHttpRequest; var response=document.createElementp; document.getElementByIddiv3.appendChildresponse; xmlhttp.onload=函数{ response.innerHTML=xmlhttp.responseText; } xmlhttp.openPOST,ssave.php,true; xmlhttp.setRequestHeaderContent-type,application/x-www-form-urlencoded; xmlhttp.sendcmt; console.logcmt+'2'; //document.getElementById'formC'.reset;//清除表单字段 */ }; } 添加注释'urlX';
你是说document.getElementByIddiv3.getElementsByNamebtnC[0]。单击?document.getElementByIdcomment噢,天哪,绝对的,天哪,我从来没有注意过id这件事,是的,绝对的,我把名字改成了id,哇
洛杉矶。。。天哪,这很有效爱这个社区是的兄弟们谢谢你们所有人。。。。!!!!!!!美丽的快活的!!!摇滚乐!!!!它的工作原理就像一块瑞士手表!!!非常感谢,我花了将近4个小时思考每一行,更改文件名和重置服务器,天哪,这只是一个id。非常感谢,非常感谢,我学到了很多,从现在起,我将用现代方式编写更多的代码,非常感谢!!!!请慢慢来,先生。
ib.id = 'button';