0

onclickでclass='mypost_title'を持つフォームのいくつかの入力のクラスを変更したかったのです。

これを試しましたが、機能しません

<a href='' onclick='popup_mypost(e)'>change me</a>
<a href='' id=edit-href onclick='popup_mypost(e)'>back me</a>

<script>
    function popup_mypost(e) 
    {
        var inputs = document.getElementsByClassName("mypost_title");
        for(var i = 0; i < inputs.length; i++) 
            {
            inputs[i].className = "change";
            }

        var edit_href = document.getElementById("edit-href");
        edit_href.onclick = function()
        {
            var inputs = document.getElementsByClassName("change");
            for(var i = 0; i < inputs.length; i++) 
                {
                inputs[i].className = "mypost_title";
                }
        }
    }
</script>
4

3 に答える 3

3

メソッドはgetElementsByClassName- つまり、あなたはs!を逃しました。

ドキュメント: https://developer.mozilla.org/en-US/docs/DOM/document.getElementsByClassName

于 2012-08-06T10:15:34.813 に答える
1

jQuery のアプローチについては、以下の私のコードを参照してください。個人的には、こちらの方が読みやすく、従うのが簡単だと思います。また、これは完全にクロスブラウザで動作します!

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>

$(document).ready(function() {
    $(".mypost_title").each(function() {
        $(this).addClass("change");
    });
});

</script>

とのクロスブラウザー互換性を簡単にチェックしgetElementsByClassNameたところ、結果は非常に驚くべきものでした。IE8 以下はこれをサポートしていません! テストについては、こちらの表を参照してください。


編集

ここであなたが探しているものを少し推測しています。これが私の解釈です:

これらの div の 1 つがクリックされたときに、クリックされたものにクラスを追加し、他のすべてのクラスからクラスchangeを削除しますか?change

その場合、次のようにします。

//This focus event will fire when the user "focuses" on an input
$(".mypost_title").focus(function() {
    $(this).removeClass("mypost_title");
    $(this).addClass("change");
});

//This blur event will fire when the user clicks outside the input, or tabs out etc
$(".mypost_title").blur(function() {
    $(this).removeClass("change");
    $(this).addClass("mypost_title");
});
于 2012-08-06T10:18:09.740 に答える
0

この行を変更して試してください:

var inputs = document.getElementsByClassName("mypost_title");

于 2012-08-06T10:15:54.733 に答える