查找元素的目标
Finding the target of an element
我一直在寻找答案,但还没有找到完整的解决方案。我不确定我搜索的条件是否好。所以它是:我想瞄准元素并更改它们的文本。现在,我对每个元素使用一个函数,但它非常重复,所以这里有一个例子:
HTML
<p id="p1" onClick="change1()">Hello</p>
<p id="p2" onClick="change2()">My name is Ben</p>
<p id="p3" onClick="change2()">Good Bye</p>
JavaScript
function change1() {
var test = prompt('Enter new text here');
document.getElementById('p1').innerHTML = test;
}
function change2() {
var test = prompt('Enter new text here');
document.getElementById('p2').innerHTML = test;
}
function change3() {
var test = prompt('Enter new text here');
document.getElementById('p3').innerHTML = test;
}
因此,我所做的是允许用户更改"p"元素中的文本。但正如你所看到的,如果我需要在页面上重复一百个元素的函数,事情可能会变得很长。有没有一种方法可以使用event.target
或其他方法来查找被单击的"p"元素的"id",然后将其放入提示框的值中?我只是想要一个通用函数来防止所有这些重复。
额外的好处是不要在每个元素上使用"onclick"(类似于$('p').click…),这将适用于所有p元素。
我更喜欢没有JQuery的JavaScript,但如果它简单得多,我会使用它
非常感谢您抽出时间!
在onclick
属性中,this
是目标。然后可以将其作为参数传递给函数。
function change(element) {
var test = prompt('Enter new text here');
element.innerHTML = test;
}
<p id="p1" onClick="change(this)">Hello</p>
<p id="p2" onClick="change(this)">My name is Ben</p>
<p id="p3" onClick="change(this)">Good Bye</p>
在我看来,如果使用jquery,您将付出更少的努力。看看这个:
$('[id=^p]').on('click', function(obj) {
var test = prompt('Enter new text here');
var n = test.length;
if(n > 0)
obj.html(test);
});
如果没有它,您将不得不使用getElementByTag并遍历for。您可以这样做,但是jquery在这里确实节省了一些时间。
有了这个解决方案,您还可以在html中不需要任何代码,从而更好地分离视图层和业务层。
相关文章:
- 内容以其开头的目标元素
- 在 Jquery 中获取目标元素的属性
- 使用next()的jQuery目标元素不起作用
- 无法让悬停事件使用 jQuery UI 持续时间参数或 CSS 处理目标元素的同级元素
- 在 jquery not 选择器中具有 2 个类的目标元素
- 目标元素边缘的触摸启动会导致鼠标按下
- 具有 ID AND 类的 jQuery 选择器目标元素不起作用
- 如何在结构中获取目标元素的属性值.js
- 获取将被鼠标悬停的目标元素
- om/react:操作呈现目标元素之外的元素
- 具有不同 id 的目标元素 Jquery
- 如何动态更改基于目标元素的绝对工具提示的位置
- 目标元素由 attr 然后附加类 jQuery
- 多个语义 UI 弹出窗口,其中目标元素在每个实例的 atribute 中定义
- 对 HTML 列表进行排序,然后对目标元素进行排序
- 无法获取目标元素
- TinyMCE 编辑器中的目标元素
- 脚本 600:此操作的目标元素无效.(仅限 IE)
- 突出显示定位点的目标元素内的元素
- 单击即可动态更改目标元素