2

ボタンをクリックすると、「表示しない」というメッセージが表示されるようにする必要があります。2 回クリックすると、元のメッセージ「表示」に戻ります。私がすでにそれを行った最初のことは、2番目のクリックである2番目のことについてのみ助けが必要です.

JavaScript:

function show()
{
    document.myform.button.value ="Dont show";//Changes message on button when clicked.
    document.myform.button.innerHTML= "Dont show";
}

HTML:

<form>
<input type=button value= "Show" name="button" id= "idButton"
onClick="show()">
</form>
4

2 に答える 2

1

I'd suggest:

function toggle(el, message1, message2) {
    if (!el || !message1 || !message2) {
        return false;
    }
    var text = el.tagName.toLowerCase() == 'input' ? el.value : (el.textContent || el.innerText),
        newText = text == message1 ? message2 : message1;

    if (el.tagName.toLowerCase() == 'input') {
        el.value = newText;
    }
    else {
        el.firstChild.nodeValue = newText;
    }
}

document.getElementById('idButton').onclick = function(){
    toggle(this, 'Show', "Don't show");
};

JS Fiddle demo.

A slightly revised version of the above:

function isTag(el, tagname) {
    if (!el || !tagname) {
        return false;
    }
    else {
        return el.tagName.toLowerCase() == tagname.toLowerCase() ? true : false;
    }
}

function toggle(el, message1, message2) {
    if (!el || !message1 || !message2) {
        return false;
    }
    else {
        var isInput = isTag(el, 'input'),
            text = isInput ? el.value : el.textContent || el.innerText,
            newText = text == message1 ? message2 : message1;
        if (isInput) {
            el.value = newText;
        }
        else if (el.textContent) {
            el.textContent = newText;
        }
        else {
            el.innerText = newText;
        }
    }
}

document.getElementById('idButton').onclick = function(){
    toggle(this, 'Show', "Don't show");
};

JS Fiddle demo.

于 2012-11-04T18:00:25.800 に答える
0

関数 show は、現在のボタンの値を調べて、適切な新しい値に設定する必要があります。

show 関数の本体の周りに欠けている中括弧はタイプミスだと思います。

于 2012-11-04T17:53:47.397 に答える