Javascript将参数传递给循环中的onclick函数

时间:2012-04-14 23:47:41

标签: javascript html html5 loops closures

使这个脚本有效的任何想法?


我有两段:

<p data-color="red">This textarea has a character limit of 50.</p>
<p data-color="blue">This one has a character limit of 40.</p>​


还有一些JS:

<script>
var p = document.getElementsByTagName('p'),
    i = p.length;

while (i--) {
    color = p[i].getAttribute('data-color');
    p[i].onclick = function() {
        this.style.color = color;
    };
}​
</script>​

Demo

我希望段落在单击时转动指定的颜色。我需要将每个元素的颜色传递给onclick函数。

任何想法?

提前非常感谢!

2 个答案:

答案 0 :(得分:3)

<script>
var p = document.getElementsByTagName('p'),
    i = p.length;

while (i--) {
    p[i].onclick = function() {
        this.style.color = this.getAttribute('data-color');
    };
}​
</script>​

答案 1 :(得分:-1)

好吧,被贬低困扰我,所以我给了另一个镜头。纯JS。这就是我想出来的。正如所指出的那样,实际上没有办法将颜色作为变量传递给函数。因此,将类附加到段落标记并使用该类作为颜色似乎是避免jQuery并提供非常简单的解决方案的唯一方法。由于示例代码中的所有段落都没有开始的类,因此这似乎是一个可行的解决方案。 Here's my jsFiddle.