javascript - 如何从在 javascript 中创建的链接运行函数
问题描述
我在一个 javascript 文件中有一个函数,它添加了一个指向我在 HTML 文件中创建的段落的链接。当用户单击链接时,我想调用在 javascript 文件中定义的函数。
我的 HTML:
<p id="para"></p>
我的 JavaScript:
var paraHTML = document.getElementById("para");
function addLink(id) {
paraHTML.innerHTML += '<a id="' + id + '" onclick="clickedTest(); return false;">Click me!</a>'
}
function clickedTest() {
console.log('here');
}
我也尝试过使用 href 例如
paraHTML.innerHTML += '<a id="' + id + '" href="javascricpt:clickedTest();">Click me!</a>'
但两种方式都给我一个错误说:ReferenceError: clickedTest is not defined
我尝试使用此问题中的以下代码,但链接数量在我的代码运行时不断变化,这使得它难以使用:
var elements = document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].onclick = function () {
console.log('here')
}
}
该addLink()
函数在我的javascript程序中的其他地方多次调用
解决方案
使用 innerHTML 创建内容通常很慢并且通常不鼓励使用,更有机的方法是务实地创建元素,然后向该元素添加事件侦听器。例如,
var elem = document.createElement('a');
elem.addEventListener('click', myClickHandler);
elem.innerText = 'My Tag';
paraHTML.appendChild(elem)
function myClickHandler(e) {
console.log('a is clicked')
}
这不仅可以解决您的问题,还可以使您的代码更易于管理
推荐阅读
- python - 结合 2 个不同的数据框并仅获取相同的数据
- c++ - 弹性解析符号 - 复杂符号
- python - 如何将非常大的 json 流文件解析为有效的 JSON
- reactjs - 我们可以在 reactjs 或 jquery 中使用 excel 函数吗?
- ios - 在 Swift 中使用静态函数来处理弹出窗口是不是很糟糕?
- ruby-on-rails - Rails 邮件程序不工作 Net::OpenTimeout
- telerik - Fiddler 在捕获流量时显示划掉的文本
- c - C中联合后的“++”是什么意思?
- sql - 从十进制 (8, 0) 格式的日期获取 n-3 或 nx 个月(约 90 天前),在 SQL Server 和 DB2 中具有年份变化影响
- mysql - 如何获得匹配多个类别的特定 MYSLQ 结果