0

span 要素のテキストまたは数値を javascript/jquery に置き換えるにはどうすればよいですか? これは私が試したものですが、コンソールには「undefinedのメソッド「replace」を呼び出すことができません」と表示され、何が問題なのか理解できません。誰かが私を正しい方向に向けることができますか?

    function changeNumber()
{
    var element = document.getElementsByClassName("grade").innerHTML; 
    var x = element.replace('1','*');
    document.getElementsByClassName("grade").innerHTML=x;
}

javascriptで動的に作成したスパン要素が問題になる場合...

4

3 に答える 3

2

document.getElementsByClassName("grade")NodeListを返します。 とは異なり、getElementbyIdループする必要があります。

1つだけ持っている場合

function changeNumber()
{
    var element= document.getElementsByClassName("grade")[0];
    var text = element.innerHTML; 
    var x = text.replace('1','*');
    element.innerHTML=x;
} 

セットがあれば

function changeNumber()
{
    var elements= document.getElementsByClassName("grade");
    for (var i=0; i<elements.length; i++) {
        var element = elements[i];
        var text = element.innerHTML; 
        var x = text.replace('1','*');
        element.innerHTML=x;
    }
} 
于 2013-03-07T22:52:57.057 に答える
0

投稿された回答は正しいですが、あなたが回答を受け入れたという事実にもかかわらず、私はa (または厳密に言えば an ) でreplace()動作する関数を作成する可能性に興味をそそられました。nodeListObject

Object.prototype.replace = function (n, r) {
    var textMethod = this[0] && this[0].textContent !== undefined;
    for (var i = 0, len = this.length; i < len; i++) {
        if (textMethod) {
            this[i].textContent = this[i].textContent.replace(n, r);
        } else {
            this[i].innerText = this[i].innerText.replace(n, r);
        }
    }
    return this;
};

document.getElementsByTagName('p').replace(/1/, '*');

JS フィドルのデモ

Win XPの下で、これがChrome 25、Firefox 19(14と18も、しばらくこのコンピューターを更新していなかった)で機能することを確認できます。IE と JS Fiddle に問題があるように見えるため、IE でテストすることはできません。

また、それは良い考えではないかもしれません。しかし、私がそれをまとめた時点では、それは役に立つ (そして比較的興味深い) ように思えました。うまくいけば、それはいくつかの役に立つかもしれません。

于 2013-03-08T01:33:45.267 に答える
0

ページに既に jQuery が含まれていて、その使用法に慣れている場合は、次のコードを試してください。

function changeNumber()
{
    $(".grade").each(function(){
        var self = this
        self.text(self.text().replace('1','*'))
    }); 
}

実際のデモ: http://jsfiddle.net/pratik136/uUHv8/

于 2013-03-07T22:58:31.023 に答える