Javascript 获取单击的元素';s ID并将其包含在纯JS函数中?
我需要根据单击的每个不同图标显示不同的输出,而无需定义单独的功能 HTML: 我尝试了上面的方法,但显然不起作用,我需要a)存储图标的id,b)将id与字符串组合。不确定这是否可行。将参数传递给函数 您需要向正在调用的函数传递一些数据(例如,对对象的引用、对象名称或其他任何您需要的数据) 例如,查看来自的示例代码 单击我以更改文本颜色 函数myFunction(elmnt、clr){ elmnt.style.color=clr; }Javascript 获取单击的元素';s ID并将其包含在纯JS函数中?,javascript,html,dom,Javascript,Html,Dom,我需要根据单击的每个不同图标显示不同的输出,而无需定义单独的功能 HTML: 我尝试了上面的方法,但显然不起作用,我需要a)存储图标的id,b)将id与字符串组合。不确定这是否可行。将参数传递给函数 您需要向正在调用的函数传递一些数据(例如,对对象的引用、对象名称或其他任何您需要的数据) 例如,查看来自的示例代码 单击我以更改文本颜色 函数myFunction(elmnt、clr){ elmnt.style.color=clr; } icon2 首先。。你有4个打字错误。前3项是在onclick
icon2
首先。。你有4个打字错误。前3项是在onclick=“expand()
(在divs中添加了一些占位符文本,以查看这是否有效)
最后,作为第一个参数访问函数中的当前元素
function expand(el) {
document.getElementById("block" + el.id).style.display = "block";
}
我可能会通过删除内联JS并使用类和数据属性来处理它。这里我有所有元素的类和数据属性。我将单击事件侦听器附加到调用handleClick
函数的“按钮”上。此函数检查按钮的数据id属性,并获取相应的幻灯片,将“show”类添加到其类列表中
const buttons=document.querySelectorAll('.button');
按钮。forEach(按钮=>{
addEventListener('click',handleClick,false);
});
函数handleClick(e){
const id=e.target.dataset.id;
const slide=document.querySelector(`.slide[data id=“${id}”]`);
slide.classList.add('show');
}
。幻灯片{
显示:无;
}
.表演{
显示:块;
}
blocki3
区块1
区块I2
您的代码应该是这样的
<p onclick="expand(this) id="i1">icon1</p>
<p onclick="expand(this) id="i2">icon2</p>
<p onclick="expand(this) id="i3">icon3</p>
<div id="blocki1"></div>
<div id="blocki2"></div>
<div id="blocki3"></div>
<script>
function expand(elm) {
document.getElementById("block" + elm.id).style.display = "block";
}
</script>
icon2
如果您是初学者,我建议您避免在HTML中添加处理程序的做法,以免它成为您的编码态度
相反,在js中为它们添加EventListener。关注点分离是一个非常重要的理论
在事件处理程序中处理这个是相对容易的
你可以阅读更多关于它的内容
var ps=Array.from(document.querySelectorAll(“p”);
对于(变量i=0;i
div{
显示:无;
}
icon1
icon2
icon3
这是1
这是2
这是3
是不是document.getElementById(“block”+This.getAttribute('id')
?这与@ajith的解决方案有点相同:)也感谢您找出了打字错误。是的,我是一个完全的初学者。抱歉,我不知道循环的目的是什么?document.querySelectorAll(“p”)
提供了所有匹配元素的节点列表。因此,您必须向节点列表中的所有节点添加一个侦听器/这就是为什么存在循环
<p onclick="myFunction(this, 'red')">Click me to change my text color.</p>
<script>
function myFunction(elmnt,clr) {
elmnt.style.color = clr;
}
</script>
<p onclick="expand(this.id) id="i1">icon1</p>
<p onclick="expand(this.id) id="i2">icon2</p>
<p onclick="expand(this.id) id="i3">icon3</p>
<div id="blocki1"></div>
<div id="blocki2"></div>
<div id="blocki3"></div>
<script>
function expand(e) {
document.getElementById("block" + e).style.display = "block";
}}
</script>
<p onclick="expand() id="i1">icon1</p>
<!-- There needs to be " after expand() -->
<p onclick="expand(this)" id="i1">icon1</p>
<p onclick="expand(this)" id="i2">icon2</p>
<p onclick="expand(this)" id="i3">icon3</p>
<div id="blocki1">blocki1</div>
<div id="blocki2">blocki2</div>
<div id="blocki3">blocki3</div>
function expand(el) {
document.getElementById("block" + el.id).style.display = "block";
}
<p onclick="expand(this) id="i1">icon1</p>
<p onclick="expand(this) id="i2">icon2</p>
<p onclick="expand(this) id="i3">icon3</p>
<div id="blocki1"></div>
<div id="blocki2"></div>
<div id="blocki3"></div>
<script>
function expand(elm) {
document.getElementById("block" + elm.id).style.display = "block";
}
</script>