1

私のスクリプトでは、createEl()2 つの変数を宣言し、それらの宣言された変数をそれらの 2 つの関数に渡す 2 つの他の関数を呼び出す関数があります。

divp1 つのリンクをクリックすると、最初の関数はの高さに 10px を追加することになっています。div別のリンクをクリックすると、2 番目の関数はの高さから 10px を差し引く必要があります。

しかし、期待どおりには機能しません。最初の関数からこれらの 2 つの関数を別の方法で呼び出さなければならないと思いますか? その結果、どのリンクをクリックしても、それらの 10px が常に差し引かれます。助けてください。

PSグローバル変数のないオプションを探しています。変数を1つの関数から複数の関数にパラメーターとして渡すだけです。

HTML:

<a href="" onclick="createEl();return false;">Larger</a>&nbsp;&nbsp;
<a href="" onclick="createEl();return false;">Smaller</a>

<div id='box'></div>

JavaScript:

function createEl() {
    var x = document.getElementById('box');
    var h = x.offsetHeight;

    large(x,h);
    small(x,h);
}

function large(x,h) {
    x.style.height = h + 10 + "px";
}

function small(x,h) {
    x.style.height = h - 10 + "px";
}
4

2 に答える 2

3

HTML を更新して、識別子パラメーターを関数呼び出しに送信します。

<a href="" onclick="createEl('large');return false;">Larger</a>&nbsp;&nbsp;
<a href="" onclick="createEl('small');return false;">Smaller</a>
<div id='box'></div>

JavaScript:

function createEl(funcName){

        var x = document.getElementById('box');
        var h = x.offsetHeight;

        if(funcName =="large") large(x,h); //depending on the parameter call the required function
        else small(x,h);
}
于 2012-05-15T13:24:04.380 に答える
2

オフセットをパラメーターとして渡し、汎用changeHeight(offset)関数を作成できます。

これはあなたの要件と一致しますか?

HTML :

<a href="" onclick="changeHeight(10);return false;">Larger</a>&nbsp;&nbsp;
<a href="" onclick="changeHeight(-10);return false;">Smaller</a>
<div id='box'></div>

JavaScript :

changeHeight(offset) {
    var x = document.getElementById('box');
    x.style.height = (x.offsetHeight + offset) + "px";
}
于 2012-05-15T13:28:30.840 に答える