3

これはHTMLです

<p>texjksdgfjl sdjfg sjdfg</p>
<p>&nbsp;</p>
<p>texjksdgfjl sdjfg sjdfg</p>
<p>&nbsp;</p>
<p>texjksdgfjl sdjfg sjdfg</p>

これはJavaScriptです

var d = document.getElementsByTagName("p"); 

for (var i=0;i<d.length;i++)
{ 
    var text = d[i].textContent;

    if (text.length===1){
        d[i].style.background ='blue';
    }
    else {
        d[i].setAttribute("backgroundColor", "red");
    }
}

< p > & nbsp; として生成される p 要素とは対照的に、何らかのテキストを含む p 要素の背景は異なります。< /p >

しかし、setAttribute が機能しないのはなぜでしょうか? 私は非常に単純なものを見逃しているに違いありませんが、私の人生では、それが何であるかを想像することはできません. 純粋な JS でお願いします。jQuery も MooTools も他のライブラリもありません。

これがテストフィドルです:ここにリンクの説明を入力してください

4

5 に答える 5

6

ええと、setAttribute関数はあなたが思っていることをしません。

jsfiddleの要素を調べると、次のように表示されます。

... <p backgroundcolor="red" ...>

そしてこれは間違いなくあなたが望むものではありません。あなたが欲しいものはこのようなものです:

setAttribute("style", "background-color: red;");

に変換されます

... <p style="background-color: red;" ...>
于 2013-03-08T13:51:07.180 に答える
3

backgroundColorHTML 要素の属性ではありません。を使用できますbgcolorが、CSS でこれを行う方が実際には優れています。

次のようにノードにクラスを追加できます。

d[i].className += " myClass";

次にCSSルールを設定します

.myClass
{
  backgroundColor: "red"

}

または、使用できるDOMに配線することを主張する場合

d[i].style.backgroundColor =  "red"
于 2013-03-08T13:48:27.587 に答える
0

要素の代わりにページをアセンブリする場合は、以下のチュートリアルを読んで、JavaScriptを介して背景を変更できます。

http://codeforbrowser.com/blog/changing-background-color-using-javascript-and-jquery/

<script type="text/javascript">
        function changebackground() {
            var colors = ["#0099cc","#c0c0c0","#587b2e",
"#990000","#000000","#1C8200","#987baa","#464646",
"#AA8971","#1987FC","#99081E"];

            setInterval(function() {
                var bodybgarrayno = Math.floor(Math.random() * colors.length);
                var selectedcolor = colors[bodybgarrayno];
                document.body.style.background = selectedcolor;
            }, 3000);
        }
        </script>
于 2013-03-08T13:49:47.253 に答える
0

あなたはそれをしなければなりません:

var d = document.getElementsByTagName("p"); 

for (var i=0;i<d.length;i++)
{ 
    var text = d[i].textContent;

    if (text.length===1){
        d[i].style.background ='blue';
    }
    else {
        d[i].style.background ='red';
    }
}

また

var d = document.getElementsByTagName("p"); 

for (var i=0;i<d.length;i++)
{ 
    var text = d[i].textContent;

    if (text.length===1){
        d[i].style.background ='blue';
    }
    else {
        d[i].setAttribute("style", "background-color:red;");
    }
}

http://jsfiddle.net/3Lze5/6/

于 2013-03-08T13:49:59.263 に答える
0

使用する:

d[i].style.setProperty("background", "red");

それ以外の

d[i].setAttribute("backgroundColor", "red");
于 2013-03-08T13:51:35.743 に答える