0

カウントダウンが 0 になったら閉じて、新しい div を作成したいです。私の div は次のようになります

<div id="bij2">Test
    <div id="bij2Blauw">
        <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
            <tr>
                <td colspan="3" class="titel">Resterende tijd</td>
            </tr>
            <tr>
                <td height="25" colspan="3" align="center" valign="middle">
                    <input id="aktie2" type="text" class="countdownTekst" size="27" readonly="readonly">
                    <script language="javascript">
                        countdown(2012, 7, 29, 'aktie2', 'bij2')
                    </script>
                </td>
            </tr>
            <tr>
                <td height="60">
                    <input name="kopen1" type="submit" class="kopen" id="kopen1" value="Koop nu"
                    />
                </td>
                <td height="60" colspan="2" align="right" valign="bottom">
                    <span class="euro">&#8364;</span>
                    <span class="prijs">14,95</span>
                </td>
            </tr>
        </table>
    </div>
</div>

これがカウントダウン

function countdown(yr, m, d, idCountdown, divId) {
    var theyear = yr;
    var themonth = m;
    var theday = d;
    var today = new Date();
    var todayy = today.getYear();
    if (todayy < 1000) todayy += 1900
    var todaym = today.getMonth();
    var todayd = today.getDate();
    var todayh = today.getHours();
    var todaymin = today.getMinutes();
    var todaysec = today.getSeconds();
    var todaystring = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec;
    var futurestring = montharray[m - 1] + " " + d + ", " + yr;
    var dd = Date.parse(futurestring) - Date.parse(todaystring);
    var dday = Math.floor(dd / (60 * 60 * 1000 * 24) * 1);
    var dhour = Math.floor((dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1);
    var dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1);
    var dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);
    var dag = "dagen";

    if (dday <= 0 && dhour <= 0 && dmin <= 0 && dsec <= 0) {
        document.getElementById(idCountdown).value = "voorbij";
        $(document.getElementById(divId)).fadeOut(2000);
        //removeElements(document.getElementById(divId));
        setTimeout("creatediv(document.getElementById(divId))", 3000);
        return;
    } else if (dday <= 1) {
        dag = 'dag';
    }
    document.getElementById(idCountdown).value = dday + ' ' + dag + ' ' + dhour + " uur " + dmin + " min " + dsec + " sec";
    setTimeout(function () {
        countdown(theyear, themonth, theday, idCountdown);
    }, 1000);
}

そのため、時間が経過すると、jQuery を使用して div がフェードアウトします。次に、新しいdivを作成したいと思います。私はこれを使用します:

function creatediv(id) {

    var newdiv = document.createElement('div');
    newdiv.setAttribute('id', id);
    newdiv.className = 'newclass';
    newdiv.style.float = "left";
    newdiv.innerHTML = "nothing";

    document.body.appendChild(newdiv);
    alert(id + 'gemaakt');
}

しかし、これによりページの下部にdivが作成され、フェードアウトするdivと同じ位置に新しいものが必要です。何を変更する必要がありますか?

4

5 に答える 5

7

jQueryreplaceWithを試しましたか?

于 2012-07-26T11:25:50.243 に答える
5

それは本当に簡単です:

$('#bij2').replaceWith( newcontent );
于 2012-07-26T11:27:15.347 に答える
1

「jQueryを使用する」とおっしゃいましたが、jQueryを使用していないようです。

あなたが本当にjQueryを使用している/使用を開始するつもりなら、Rahulの答えはあなたが望むものです。

parentNodeそうでない場合は、、、insertBeforeおよびを探しています。removeChild例:

// Assuming olddiv refers to the old div
var parent = olddiv.parentNode;
parent.insertBefore(newdiv, olddiv);
parent.removeChild(olddiv);

これにより、古いdivの前に新しいdivが挿入され、次に古いdivが削除されます。

だからおそらく:

function replacediv(oldid, id) {

    var newdiv = document.createElement('div');
    newdiv.id = typeof id !== "undefined" ? id : oldid; // Use old ID if no new one specified
    newdiv.className = 'newclass';
    newdiv.style.float = "left";
    newdiv.innerHTML = "nothing";

    var olddiv = document.getElementById(oldid);
    var parent = olddiv.parentNode;
    parent.insertBefore(newdiv, olddiv);
    parent.removeChild(olddiv);
    alert(id + 'gemaakt');
}

...そして古いIDと新しいIDでそれを呼び出します。

setAttribute補足として:を使用する必要はありませんid。これは、要素インスタンスに反映されたプロパティです。

于 2012-07-26T11:33:07.887 に答える
1

コードで jQuery をまったく使用していません。あなたが犯すエラーは、ノードを置き換えるのではなく、新しいノードをその後に追加することです。お探しの機能はreplaceChild.

node.replaceChild(oldNode, newNode)
于 2012-07-26T11:29:30.757 に答える
1

div 2 を div 3 に置き換えたい場合

<div id="1"><div id = "2"></div></div>

あなたが使用することができます

$("#1").html('<div id="3"></div>')

またはあなたが使用することができます

$("#2").replaceWith('<div id="3"></div>')
于 2012-07-26T11:29:31.630 に答える