Javascript 等待异步从 Firebase 检索数据

标签 javascript dom onclick addeventlistener

我有以下代码,可以在运行时使用 DOM 在我的 Javascript 应用程序中创建一个带有一些输入字段和按钮的表单(在 Firebase 循环中,我已将其删除,因为无论有没有它,我都会遇到相同的问题)。

这是我的片段:

var form = document.createElement("FORM");
var fieldset = document.createElement("FIELDSET");
var inputId = document.createElement("INPUT");
inputId.value = "ID";
fieldset.appendChild(inputId);
var inputVillage = document.createElement("INPUT");
inputVillage.value = "Villaggio";
fieldset.appendChild(inputVillage);
var inputImage = document.createElement("INPUT");
inputImage.value = "Immagine";
fieldset.appendChild(inputImage);
var buttonMod = document.createElement("INPUT");
buttonMod.setAttribute("type", "button");
buttonMod.value = "Modifica";
  // HERE my problem
buttonMod.addEventListener("click",tryfunc("Mark"));
  // or (same result)
// buttonMod.onclick(tryfunc);
fieldset.appendChild(buttonMod);
form.appendChild(fieldset);
document.body.appendChild(form);

function tryfunc(name) {
	[...]
	document.write("Hello " + name);
	// I also tried with this instruction found here on stackoverflow
	// (but this generate other problems)
	//name.stopPropagation();
}

我的 tryfunc("xxx") 在我的应用程序启动时自动触发,如何防止它?

最佳答案

您正在立即调用您的函数:tryfunc("Mark")。注意,函数调用()括号。相反,您需要具有匿名函数并从内部调用您的函数:

buttonMod.addEventListener("click", function() {
    tryfunc("Mark");
});

关于Javascript 等待异步从 Firebase 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717897/

相关文章:

javascript - HTML、CSS、JS - 具有永久领先内容的 Contenteditable div

javascript - .insertBefore() 在一个方向上起作用,但在另一个方向上不起作用

javascript - 正在为如何刷新事件监听器而烦恼吗?

javascript - 在特定位置处理 Android 后退按钮 - Cordova/Phonegap

javascript - Ajax 函数不适用于动态 div

javascript - 使用 JavaScript 监控标签的样式变化?

javascript - 根据父 div 的 id 添加升序图像

javascript - 替换不是替换文本

javascript - 使用javascript禁用onclick属性

jquery - 单击正文滚动到下一个 div