神秘代码:+ i +和+ x +

时间:2011-05-03 11:32:49

标签: javascript

在以下代码中:

for (i=0; i<itemsinlist.length; i++) {
        var rating = document.createElement('div');
        itemsinlist[i].appendChild(rating);
        rating.className = "rating";
        rating.id = "thumbnails" +i;

        for (x=0; x<4; x++) {
        star = document.createElement('span');
        star.innerHTML = "&#9733;";
        star.className = "star";
        star.setAttribute("onclick", "ratingsSet("+i+","+x+");");
        rating.appendChild(star);
} //createratingsstars

我正在努力理解star.setAttribute()的第二个参数,在这一行中:

star.setAttribute("onclick", "ratingsSet("+i+","+x+");");

具体来说,我被+i++x+甩了。

起初我认为这些是增量运算符的某种变化,但后来决定它必须连接一些东西,但我无法弄清楚是什么/如何。循环生成的HTML是:

<span class="star" onclick="ratingsSet(0,0);">*</span>
<span class="star" onclick="ratingsSet(0,1);">*</span>
<span class="star" onclick="ratingsSet(0,2);">*</span>
<span class="star" onclick="ratingsSet(0,3);">*</span>

但我的反向工程印章让我失望(如果我有任何开始的话)。

帮助?

7 个答案:

答案 0 :(得分:4)

这是字符串连接。 i是外循环计数器,x是内循环计数器。它似乎是在迭代一个集合并为每个项目创建4个跨度。

答案 1 :(得分:4)

它正在整理这个字符串:

"ratingsSet(0,1);"

0位于变量i中,值1位于变量x中。如果我们添加一些空格,可能会更清楚:

 "ratingsSet(" + i + "," + x + ");"

答案 2 :(得分:1)

据我可以告诉它增加ix并为click元素设置属性:

"ratingsSet("+i+","+x+");"

然后点击ratingsSet("+i+","+x+");后执行params。

奇怪的做法。

答案 3 :(得分:1)

您可以拥有更易读的代码:

star.onclick = function() {
   ratingsSet(i, x);
};

将事件处理程序设置为旧浏览器中的属性中断,而不是非常优雅。

答案 4 :(得分:0)

JavaScript允许您使用plus运算符连接字符串和整数(以及AFAIK,任何对象的字符串表示形式)。生成的HTML(带有嵌入式JavaScript!)就是:ratingsSet()调用的实例化。

答案 5 :(得分:0)

“+”是连接两个字符串的中缀运算符。

示例:“mor”+“ning”将给出字符串“morning”。

所以它只是将i或x的值打印到HTML。

答案 6 :(得分:-2)

我有同样的问题,现在我知道我犯了一个有趣的错误。你必须像我一样以错误的方式阅读这个陈述。这第二个参数需要一个字符串,所以“ratings(”+ i +“,”+ x +“);”意味着

  

“ratingsSet(” +

+ “ ”+
X
+“):”

所以这个参数将成为一个字符串。没有+ x +
:)