javascript - 如何将字符串变量传递给 javascript 函数并使用它来获取元素
问题描述
我有一个想要重用的 JavaScript 函数。我有 2 个 HTML onclick 函数调用相同的代码。第一个(实例 1)发送“this”,第二个(实例 2)发送 id 值。实例 1 是模态本身上的关闭按钮,实例 2 是模态体内的测试取消按钮。
实例 1 在分配 href 值时在函数中工作,但实例 2 不是,即实例 1 关闭模式而实例 2 不关闭。
谁能告诉我我哪里出错了?下面的代码示例。
<!-- HTML instance 1 -->
<a id="ModalClose" title="Close" onclick="CloseModal(this)"
class="close">X</a>
<!-- HTML instance 2 -->
<button type="button" id="test123"
onclick="CloseModal('ModalClose')">Close</button>
function CloseModal(ModalObj) {
if (typeof ModalObj === 'object') {
var x = document.getElementById(ModalObj.id);
} else {
var x = document.getElementById(ModalObj);
}
x.href = "#close";
}
解决方案
无论单击链接还是单击按钮,您的 JavaScript 代码都在有效地执行相同的操作,即它向链接添加了一个 href。行为的差异来自这些元素的默认操作。按钮没有特定的默认操作(在表单之外),但链接导航到其 href 属性中给定的位置。
现在,当您单击按钮时,位置不会发生任何变化。要解决此问题,您必须在更改链接后手动单击链接。添加x.click();
为单击处理函数中的最后一行以单击链接并获取默认行为。
推荐阅读
- ios - 多行标签和固定大小图标图像的水平 StackView 问题
- elasticsearch - 如何为 Kibana 合并两个 ElasticSearch 文档
- python - matchTemplate 与调整大小的图像不起作用:(-215:断言失败)_img.size().height <= _templ.size().height
- javascript - Vue.js 过渡不适用于页面首次加载
- laravel - 为什么自引用下拉菜单不显示任何内容
- jquery - jQuery Datatable - TypeError:settings.aoColumns[column] 未定义,而表格格式正确
- laravel - 使用 laravel 范围避免歧义
- spring - 如何使用 Spring 的 yml 中的属性的键中的变量
- node.js - 用于 nodejs 和 postgresql 的迁移生成器文件工具
- python-3.x - 圣杯包:无法安装依赖项:graphqlclient==0.2.4