Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在html中引用动态创建的元素_Javascript_Jquery_Html_Dynamically Generated - Fatal编程技术网

Javascript 在html中引用动态创建的元素

Javascript 在html中引用动态创建的元素,javascript,jquery,html,dynamically-generated,Javascript,Jquery,Html,Dynamically Generated,我有一个输入字段(search\u text),当用户输入超过1个字母时,它会显示数据库中的图像(id=“demo2”) 然后我有一个绘图函数(draw()),它应该在点击图像时(从数据库显示图像后)执行某些操作 问题是图像(id=“demo2”)在Html DOM中不存在,只有在用户输入了超过1个字母之后才存在 现在,我有: function myFunction(){ console.log('success'); alert("I am an alert box!"); con

我有一个输入字段(
search\u text
),当用户输入超过1个字母时,它会显示数据库中的图像(
id=“demo2”

然后我有一个绘图函数(
draw()
),它应该在点击图像时(从数据库显示图像后)执行某些操作

问题是图像(
id=“demo2”
)在Html DOM中不存在,只有在用户输入了超过1个字母之后才存在

现在,我有:

function myFunction(){
  console.log('success');
  alert("I am an alert box!");
  console.log('success2');
 var x = document.getElementById("demo2");
 console.log(x);
 x.addEventListener("click", myFunct);
 console.log(x);
}

function myFunct(){
  currentImg=document.getElementById("demo2");
 draw();
}


function myFunction2(){
  //alert("I am an alert box!");
  var x = document.getElementById("search_text").value;
  if (x.length >2){myFunction();} 
  }
当我慢悠悠地键入searchterm时,alertbox就会出现,然后,当我单击图像时,
draw()
函数就会工作

当我取出
警报时,它将不起作用。不知何故,该警报允许用户等待图像加载/创建。如果没有警报,我如何实现这一点


谢谢

使用
setTimeout
使其在单独的线程中运行,否则
alert
将执行以下操作:

function myFunction2(){
  setTimeout(function(){
       var x = document.getElementById("search_text").value;
       if (x.length >2){
           myFunction();
       } 
  },100)//keep minimal time.
}
建议:

为什么不向DOM添加元素来切换元素的显示,而不是在键入2个字符后创建它?


使用
setTimeout
使其在单独的线程中运行,否则
alert
将执行以下操作:

function myFunction2(){
  setTimeout(function(){
       var x = document.getElementById("search_text").value;
       if (x.length >2){
           myFunction();
       } 
  },100)//keep minimal time.
}
建议:

为什么不向DOM添加元素来切换元素的显示,而不是在键入2个字符后创建它?


使用
setTimeout
使其在单独的线程中运行,否则
alert
将执行以下操作:

function myFunction2(){
  setTimeout(function(){
       var x = document.getElementById("search_text").value;
       if (x.length >2){
           myFunction();
       } 
  },100)//keep minimal time.
}
建议:

为什么不向DOM添加元素来切换元素的显示,而不是在键入2个字符后创建它?


使用
setTimeout
使其在单独的线程中运行,否则
alert
将执行以下操作:

function myFunction2(){
  setTimeout(function(){
       var x = document.getElementById("search_text").value;
       if (x.length >2){
           myFunction();
       } 
  },100)//keep minimal time.
}
建议:

为什么不向DOM添加元素来切换元素的显示,而不是在键入2个字符后创建它?


您可以使用jQuery函数
$.on()
将操作绑定到尚未创建的元素。您只需将其指定在代码运行时存在的一个组件上,例如
body
元素

看下面的小提琴。
HEY
按钮在3秒后才会出现,但由于我们如上所述将click事件绑定到它,因此不会出现任何问题

//这就是如何绑定到动态创建的元素
$('body')。on('click','myclass',myFunction);
setTimeout(函数(){
var button=document.createElement('button');
button.className=“myclass”;
appendChild(document.createTextNode(“HEY”);
$(“#按钮单元格”)。追加(按钮);
}, 3000);
函数myFunction(){
警惕(“它在工作!”);
}

您可以使用jQuery函数
$.on()
将操作绑定到尚未创建的元素。您只需将其指定在代码运行时存在的一个组件上,例如
body
元素

看下面的小提琴。
HEY
按钮在3秒后才会出现,但由于我们如上所述将click事件绑定到它,因此不会出现任何问题

//这就是如何绑定到动态创建的元素
$('body')。on('click','myclass',myFunction);
setTimeout(函数(){
var button=document.createElement('button');
button.className=“myclass”;
appendChild(document.createTextNode(“HEY”);
$(“#按钮单元格”)。追加(按钮);
}, 3000);
函数myFunction(){
警惕(“它在工作!”);
}

您可以使用jQuery函数
$.on()
将操作绑定到尚未创建的元素。您只需将其指定在代码运行时存在的一个组件上,例如
body
元素

看下面的小提琴。
HEY
按钮在3秒后才会出现,但由于我们如上所述将click事件绑定到它,因此不会出现任何问题

//这就是如何绑定到动态创建的元素
$('body')。on('click','myclass',myFunction);
setTimeout(函数(){
var button=document.createElement('button');
button.className=“myclass”;
appendChild(document.createTextNode(“HEY”);
$(“#按钮单元格”)。追加(按钮);
}, 3000);
函数myFunction(){
警惕(“它在工作!”);
}

您可以使用jQuery函数
$.on()
将操作绑定到尚未创建的元素。您只需将其指定在代码运行时存在的一个组件上,例如
body
元素

看下面的小提琴。
HEY
按钮在3秒后才会出现,但由于我们如上所述将click事件绑定到它,因此不会出现任何问题

//这就是如何绑定到动态创建的元素
$('body')。on('click','myclass',myFunction);
setTimeout(函数(){
var button=document.createElement('button');
button.className=“myclass”;
appendChild(document.createTextNode(“HEY”);
$(“#按钮单元格”)。追加(按钮);
}, 3000);
函数myFunction(){
警惕(“它在工作!”);
}


你会拉小提琴吗?你会拉小提琴吗?你会拉小提琴吗?你会拉小提琴吗?谢谢!作品非常感谢你!我决定调用
myFunct()
函数,否则您必须单击两次。谢谢谢谢作品非常感谢你!我决定调用
myFunct()
函数,否则您必须单击两次。谢谢谢谢作品非常感谢你!我决定调用
myFunct()
函数,否则您必须单击两次。谢谢谢谢作品非常感谢你!我决定调用
myFunct()
函数,否则您必须单击两次。谢谢