前端小白请教一个数字转换成字符串的问题

有如下两段代码

第一段代码

 var str = '';
        var aDiv =document.getElementById('big-box').getElementsByTagName('div');
        for (var i=0;i<100;i++) {
            str += '<div></div>';
        }
        document.getElementById('big-box').innerHTML= str;
        var length = Math.sqrt(aDiv.length);
        for (var i=0;i<length;i++) {
            for (var j=0;j<length;j++) {
                aDiv[i*length + j].style.left = j*49 + 'px';
                aDiv[i*length + j].style.top = i*49 + 'px';
                aDiv[i*length + j].innerHTML =i + j;
            }
        }

第二段代码

 for (i=0;i<10;i++) {
            for (j=0;j<10;j++) {
                document.getElementById('big-box').innerHTML += '<div style="left:'+ j*49 +'px;top:'+ i*49 +'px;">'+i+j+'</div>'
            }
        }

第一段代码里面的innerHTML是两个数字相加,而第二段代码则是字符串拼接,请问产生这种差异的原因是什么?
比如i=1;j=1;第一段代码显示2 而第二段代码显示11

5个回答

第二段中的i 和 j 恰门面是字符串,会自动转型成字符串。你把i+j括号括起来应该就跟第一段代码一样了

github_38927701
还是踢球吧 回复FEN_TA: 我懂了 谢谢啦
2 年多之前 回复
a314066646
FEN_TA 括号括起来优先运算,就是简单的加法计算。顺序计算,前面的是字符串,后面是数字,数字会转型成字符串拼接上去
2 年多之前 回复
github_38927701
还是踢球吧 括号括起来的确和第一段一样了,但是还是不懂为什么,能麻烦再解释一下吗。。。
2 年多之前 回复

没看懂,能把完整代码发一下我运行一下么

document.getElementById('big-box').innerHTML += '

'+(i+j)+'
';
这么做,你这是运算符优先级问题。加号依次加过来,字符串加数字就成字符串了。
github_38927701
还是踢球吧 懂了 谢谢!
2 年多之前 回复
 document.getElementById('big-box').innerHTML += '<div style="left:'+ j*49 +'px;top:'+ i*49 +'px;">'+(i+j)+'</div>'

字符串连接数字要用parseInt()处理一下

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问