3

これはどのように機能しますか:

newDiv.style.top = topBar.style.height.split("px")[0]+"px";
->>><div style="top: 30.31px;" class="lineSeparator"></div>

そして、これも機能します

newDiv.style.top = topBar.style.height.split("px")[0]-2+"px";
->>><div style="top: 28.31px;" class="lineSeparator"></div>

そして、これも機能します

newDiv.style.top = topBar.style.height.split("px")[0]/2+"px";
->>><div style="top: 15.15px;" class="lineSeparator"></div>

しかし、これは機能しません:

newDiv.style.top = topBar.style.height.split("px")[0]+2+"px";
->>><div style="top: 30.31px;" class="lineSeparator"></div>

私も試しました:

newDiv.style.top = (topBar.style.height.split("px")[0]+2)+"px";

これは私の完全なコードです:

function generateSeparators(n){
    for(var i=0;i<n;i++){
        var newDiv=document.createElement("div");
        newDiv.style.top = topBar.style.height.split("px")[0]+"px";
        newDiv.className = "lineSeparator";
        sideBar.appendChild(newDiv);

    }
}
4

1 に答える 1

8

Javascriptの+演算子は、 や とは異なり/-文字列の連結も実行します。最初の文字列オペランドを数値に変換する必要があります。そうしないと、「文字列」部分が「数値」部分を圧倒します。例えば:

"3" + 2 --> "32"

これは、コードを修正する 1 つの方法です。

newDiv.style.top = ((+topBar.style.height.split("px")[0])+2)+"px";

これはおそらくより良い、より明確な方法です:

newDiv.style.top = (parseInt(topBar.style.height.split("px")[0], 10) + 2) + "px";

(parseInt の 10 パラメータは、文字列を 10 進数として解釈することを意味します。詳細については、ドキュメントを参照してください: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt )

于 2013-03-05T15:17:18.420 に答える