简体   繁体   English

javascript 中的 Onclick = function(),显示“未捕获的类型错误”

[英]Onclick = function() in javascript, showing “uncaught type error”

I am trying to do something like below.我正在尝试做类似下面的事情。

I have 5 buttons in my site.the desire is if user press any of the button, it makes an effect of scaling down.the issue is, i don't want want all of them scale down when i click one of the buttons , so i came with this approach, but its showing me an error.so how can achieve this effect?我的站点中有 5 个按钮。希望是如果用户按下任何按钮,它会产生缩小的效果。问题是,当我单击其中一个按钮时我不希望所有按钮都缩小,所以我采用了这种方法,但它向我显示了一个错误。那么如何才能达到这种效果?

 items = document.querySelectorAll('.tags'); for (var iterator = 0; iterator < items.length; iterator++){ items[iterator].onclick = function () { items[iterator].style.transform = 'scale(0.9, 0.9)'; } }
 <button class='tags'>button1</button> <button class='tags'>button2</button> <button class='tags'>button3</button> <button class='tags'>button4</button> <button class='tags'>button5</button>

Use this.style.transform instead of this.style.transform使用this.style.transform而不是this.style.transform

 items = document.querySelectorAll('.tags'); for (var iterator = 0; iterator < items.length; iterator++){ items[iterator].onclick = function (iterator) { this.style.transform = 'scale(0.9, 0.9)'; } }
 <button class='tags'>button1</button> <button class='tags'>button2</button> <button class='tags'>button3</button> <button class='tags'>button4</button> <button class='tags'>button5</button>

You can also use this approach,您也可以使用这种方法,

 function animateInit(event){ event.target.style.transform = 'scale(0.9, 0.9)'; }
 <button class='tags' onclick="animateInit(event)">button1</button> <button class='tags' onclick="animateInit(event)">button2</button> <button class='tags' onclick="animateInit(event)">button3</button> <button class='tags' onclick="animateInit(event)">button4</button> <button class='tags' onclick="animateInit(event)">button5</button>

Unfortunately I can not see all your code.不幸的是,我看不到您的所有代码。 The problem must be in the iterator declared with var .问题必须出在用var声明的iterator I just changed the var for let and works fine for me.我只是更改了letvar并且对我来说工作正常。

 items = document.querySelectorAll('.tags'); for (let iterator = 0; iterator < items.length; iterator++){ items[iterator].onclick = function () { items[iterator].style.transform = 'scale(0.9, 0.9)'; } }
 <button class='tags'>button1</button> <button class='tags'>button2</button> <button class='tags'>button3</button> <button class='tags'>button4</button> <button class='tags'>button5</button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM