Onclick函数基于元素id

Fel*_*ang 1 html javascript jquery getelementbyid

我正在一个具有继承关系可视化的网站上工作.

我尝试将每个节点框与特定的URL链接起来.Element的html看起来像这样:

<g class="node" id="RootNode" transform="translate(0,453.125)">
Run Code Online (Sandbox Code Playgroud)

我用了

$('#RootNode').click(function(){//do something}
Run Code Online (Sandbox Code Playgroud)

并且

document.getElementById("RootNode").onclick(){//do something}
Run Code Online (Sandbox Code Playgroud)

他们都没有找到元素,也没有设置onclick功能.

我误解了什么吗?任何信息都会有所帮助.谢谢.

Tus*_*har 12

确保您的代码处于DOM Ready中,rocket-hazmat所指出的那样

.点击()

$('#RootNode').click(function(){
  //do something
});
Run Code Online (Sandbox Code Playgroud)
document.getElementById("RootNode").onclick = function(){//do something}
Run Code Online (Sandbox Code Playgroud)


.上()

使用事件委托/

$(document).on("click", "#RootNode", function(){
   //do something
});
Run Code Online (Sandbox Code Playgroud)


尝试

在Dom Ready中包装代码

$(document).ready(function(){
    $('#RootNode').click(function(){
     //do something
    });
});
Run Code Online (Sandbox Code Playgroud)


Meh*_*ami 6

你可以试试这些:

document.getElementById("RootNode").onclick = function(){/*do something*/};
Run Code Online (Sandbox Code Playgroud)

或者

$('#RootNode').click(function(){/*do something*/});
Run Code Online (Sandbox Code Playgroud)

或者

$(document).on("click", "#RootNode", function(){/*do something*/});
Run Code Online (Sandbox Code Playgroud)

前两种方法有一点是,重要的是在页面 DOM 中的哪个位置,你应该把它们,整个 DOM 应该被加载,以便能够找到,如果你把它们包装起来,这通常会得到解决awindow.onloadDOMReady事件,例如:

//in Vanilla JavaScript
window.addEventListener("load", function(){
     document.getElementById("RootNode").onclick = function(){/*do something*/};
});
//for jQuery
$(document).ready(function(){
    $('#RootNode').click(function(){/*do something*/});
});
Run Code Online (Sandbox Code Playgroud)