Javascript 我怎样才能保留这一点;onclick";避免发生不止一次?
我试图有一个按钮,当点击时,会打开一个区域来输入消息。我在HTML中使用“onclick”,我希望它只能单击一次。我不想让它继续制造更多的文本,你点击它的次数越多 在调用函数的onclick之后有一个this.onclick=“null”。在我添加提交按钮之前,这一直在工作 因此,该代码起作用: HTML: 但是,当我保持HTML不变并向javascript添加submit按钮时,如下所示:Javascript 我怎样才能保留这一点;onclick";避免发生不止一次?,javascript,html,onclick,Javascript,Html,Onclick,我试图有一个按钮,当点击时,会打开一个区域来输入消息。我在HTML中使用“onclick”,我希望它只能单击一次。我不想让它继续制造更多的文本,你点击它的次数越多 在调用函数的onclick之后有一个this.onclick=“null”。在我添加提交按钮之前,这一直在工作 因此,该代码起作用: HTML: 但是,当我保持HTML不变并向javascript添加submit按钮时,如下所示: function createMessage() { var form = document.c
function createMessage() {
var form = document.createElement("form");
form.name = "form_input";
form.method = "POST";
form.action = "messages.php";
container.appendChild(form);
var textarea = document.createElement("textarea");
textarea.name = "message_input";
textarea.cols = 84;
textarea.rows = 16;
textarea.id = "message_input";
container.appendChild(textarea);
var submit = document.createElement("button");
submit.innerHTML = 'Send';
submit.id = 'send_message';
container.appendChild(submit);
submit.onClick(messageAjax());
};
它又开始复制了。有没有办法阻止这种事情发生
谢谢你的帮助 这是因为您的代码包含错误:
submit.onClick(messageAjax());
属性为onclick
,小写onClick
不存在并抛出错误。这将防止按钮清除自己的onclick
,因为错误会导致脚本停止
我不完全确定上面这一行应该是什么。它似乎在调用messageAjax
,然后立即将该函数的参数传递给submit.onClick
。。。你是说这个吗
submit.onclick = messageAjax;
也许:
(function() {
var open = false;
function createMessage() {
if( open ) return;
var form = document.createElement("form");
form.name = "form_input";
form.method = "POST";
form.action = "messages.php";
container.appendChild(form);
var textarea = document.createElement("textarea");
textarea.name = "message_input";
textarea.cols = 84;
textarea.rows = 16;
textarea.id = "message_input";
container.appendChild(textarea);
var submit = document.createElement("button");
submit.innerHTML = 'Send';
submit.id = 'send_message';
container.appendChild(submit);
submit.onClick(messageAjax());
open = true;
};
})();
闭包避免了与window.open()的名称冲突。您可以对其进行不同的命名,但这只是为了让您了解它。在再次添加之前,您是否验证onclick()事件是否已经设置过一次?为什么不在添加之前检查textarea是否已经存在?你永远不会得到多个。是的,当我刚刚完全摆脱onclick时,这是有效的,但是当单击submit按钮时,我应该怎么做才能让messageAjax运行呢?这正是我建议你应该用它替换的行。
submit.onclick = messageAjax;
(function() {
var open = false;
function createMessage() {
if( open ) return;
var form = document.createElement("form");
form.name = "form_input";
form.method = "POST";
form.action = "messages.php";
container.appendChild(form);
var textarea = document.createElement("textarea");
textarea.name = "message_input";
textarea.cols = 84;
textarea.rows = 16;
textarea.id = "message_input";
container.appendChild(textarea);
var submit = document.createElement("button");
submit.innerHTML = 'Send';
submit.id = 'send_message';
container.appendChild(submit);
submit.onClick(messageAjax());
open = true;
};
})();