Javascript 如何获取已创建的元素(按钮)以运行函数?

Javascript 如何获取已创建的元素(按钮)以运行函数?,javascript,Javascript,这是我用来创建按钮的代码: var dfom = document.createElement('div'); dfom.setAttribute("id","options"); dfom.innerHTML = "<input type=\"button\" value=\"Say HI\" onclick=\get()\ />"; dfom.style.padding = '10px'; document.body.insertBefore(dfom, document.bod

这是我用来创建按钮的代码:

var dfom = document.createElement('div');
dfom.setAttribute("id","options");
dfom.innerHTML = "<input type=\"button\" value=\"Say HI\" onclick=\get()\ />";
dfom.style.padding = '10px';
document.body.insertBefore(dfom, document.body.firstChild);

但是,当我单击按钮时,什么也没有发生。需要帮忙吗?谢谢

函数名也应该用引号括起来,即
onClick=“get();”
。对于Instance,只要有时间,也要阅读事件侦听器。

函数名也应该用引号括起来,即
onClick=“get();”
。如果您想编写正确的JavaScript代码,则应按照以下步骤进行:

var dfom = document.createElement("div"),
    button = document.createElement("input");

button.type = "button";
button.value = "Say HI";
button.addEventListener("click", function() {
    alert("HI");
}, false);

dfom.id = "options";
dfom.style.padding = "10px";
dfom.appendChild(button);

document.body.insertBefore(dfom, document.body.firstChild);

演示:

如果您想编写正确的JavaScript代码,那么您应该按照以下步骤进行:

var dfom = document.createElement("div"),
    button = document.createElement("input");

button.type = "button";
button.value = "Say HI";
button.addEventListener("click", function() {
    alert("HI");
}, false);

dfom.id = "options";
dfom.style.padding = "10px";
dfom.appendChild(button);

document.body.insertBefore(dfom, document.body.firstChild);

演示:

\
应该是
\“
围绕
get()
,但是还有更多的注意事项:即
get
函数实际上必须在
onload
或另一个回调之外定义,因为它需要全局可用。您需要类似的设置:

…它在
onLoad
回调之外定义
get
,使其可用于
onclick

另外,使用标准事件绑定,而不是单击
onclick

dfom.innerHTML = "<input type=\"button\" value=\"Say HI\">";
dfom.firstChild.addEventListener('click', get);
dfom.innerHTML=“”;
dfom.firstChild.addEventListener('click',get);

get()
周围的
\
应该是
\“
,但是还有更多的注意事项:即
get
函数实际上必须在
onload
或另一个回调之外定义,因为它需要全局可用。您需要类似于以下内容的设置:

…它在
onLoad
回调之外定义
get
,使其可用于
onclick

另外,使用标准事件绑定,而不是单击
onclick

dfom.innerHTML = "<input type=\"button\" value=\"Say HI\">";
dfom.firstChild.addEventListener('click', get);
dfom.innerHTML=“”;
dfom.firstChild.addEventListener('click',get);

以下内容对我很有用:

window.onload = function() {
  var dfom = document.createElement('div');
  dfom.id = "options";
  dfom.innerHTML = '<input type="button" value="Say HI" onclick="get()">';
  dfom.style.padding = '10px';
  document.body.insertBefore(dfom, document.body.children[0]);
}

function get() {
  alert("HI");
}
window.onload=function(){
var dfom=document.createElement('div');
dfom.id=“选项”;
dfom.innerHTML='';
dfom.style.padding='10px';
document.body.insertBefore(dfom,document.body.children[0]);
}
函数get(){
警报(“HI”);
}
需要注意的一些事项:

  • 对于标准DOM属性,通常最好只设置属性,不要使用setAttribute,因为它的实现不一致

  • 对脚本使用单引号和对makrup使用双引号更为清晰,这样就不必使用太多反斜杠来引用引号

  • 严格来说,HTML属性值只需要被引用。只引用它们比记住那组字符更容易。浏览器也是非常宽容的,所以你可以不带引号的字符,这些字符在一些浏览器中应该被引用,但在其他浏览器中不应该被引用


  • 以下是我的作品:

    window.onload = function() {
      var dfom = document.createElement('div');
      dfom.id = "options";
      dfom.innerHTML = '<input type="button" value="Say HI" onclick="get()">';
      dfom.style.padding = '10px';
      document.body.insertBefore(dfom, document.body.children[0]);
    }
    
    function get() {
      alert("HI");
    }
    
    window.onload=function(){
    var dfom=document.createElement('div');
    dfom.id=“选项”;
    dfom.innerHTML='';
    dfom.style.padding='10px';
    document.body.insertBefore(dfom,document.body.children[0]);
    }
    函数get(){
    警报(“HI”);
    }
    
    需要注意的一些事项:

  • 对于标准DOM属性,通常最好只设置属性,不要使用setAttribute,因为它的实现不一致

  • 对脚本使用单引号和对makrup使用双引号更为清晰,这样就不必使用太多反斜杠来引用引号

  • 严格来说,HTML属性值只需要被引用。只引用它们比记住那组字符更容易。浏览器也是非常宽容的,所以你可以不带引号的字符,这些字符在一些浏览器中应该被引用,但在其他浏览器中不应该被引用



  • 您应该使用
    firstChild
    而不是
    children[0]
    。哈,谢谢…仍然无法解决我的更大问题。您的代码是否在body元素存在后运行?您应该使用
    firstChild
    而不是
    children[0]
    。哈,谢谢…但仍然无法解决我的更大问题。您的代码是否在body元素存在后运行?这样做没有帮助。我将其更改为:dfom.innerHTML=“”+1-但属性名称的大写与此无关。;-)@老习惯难以改掉;)@用户2213591它绝对应该。您是如何实现
    get()
    函数的?这就是问题所在:P谢谢!这样做无济于事。我将其更改为:dfom.innerHTML=“”+1-但属性名称的大写与此无关。;-)@老习惯难以改掉;)@用户2213591它绝对应该。您是如何实现
    get()
    函数的?这就是问题所在:P谢谢!先生,你是上帝!非常感谢。@user2213591还不是上帝:)但是学习好的编程风格永远不会晚。先生,你是上帝!非常感谢。@user2213591还不是上帝:)但是学习好的编程风格永远不会晚。。。。尽量避免使用
    innerHTML
    ,因为它的速度太慢了。+1问题在于没有使用双引号的反斜杠。语句
    get函数实际上必须在创建元素之前定义
    不正确,函数定义将始终在运行任何代码之前进行处理,因此它将始终在创建按钮之前进行定义(如果按钮按原样由代码创建).@VisioN你有什么证据支持这一说法吗?@RobG你是对的;我认为,如果函数是在
    onLoad
    中定义的,那么它将不会在全局范围内可用,因此这个问题:。。。尽量避免使用
    innerHTML
    ,因为它的速度太慢了。+1问题在于没有使用双引号的反斜杠。语句
    get函数实际上必须在元素创建之前定义
    不正确,函数定义将始终在任何代码运行之前进行处理,因此它将始终在b