0

これは、私がここで始めた最初のスレッドの 2 番目のスレッドです:ダイアログを作成しましたが、どうすれば閉じることができますか?

更新されたコードを含めることができるように、新しいスレッドを作成しています。

まず第一に、上記のリンク先の投稿で私を助けてくれたすべての人に多大な感謝をしたいと思いますが、前述したように、コードサンプルを追加できるようにこのスレッドを開始しています.

一部のページにスクロール時に表示されるダイアログがありますが、問題が発生しています。

このダイアログはここで見ることができます: (表示される半透明のボックス) http://classifieds.your-adrenaline-fix.com/detail.php?fatherID=37&TypeID=42&ListingID=42

detail.php には次のものがあります:
(頭の中)

    <script type="text/javascript">
    function loaddiv(thediv, thefile) {
        if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
        } else {
        xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
        }

        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                document.getElementById(thediv).innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open('GET', thefile, true);
        xmlhttp.send();
    }
    </script>

その下:

    <body onscroll="loaddiv('div2', 'do-you-have-a-dirt-bike-for-sale.html')">

それで:

    if (!Has_Seen_DB_For_Sale_Dialog($user_ip)){
        echo "<div id='div2'></div>";
        ip_add($user_ip);
    }

その上(インクルードファイル内)には次のものがあります:

    function Has_Seen_DB_For_Sale_Dialog($ip){
        global $user_ip;
        $query ="SELECT `IP` FROM `DB_For_Sale_Dialog` WHERE `IP`='$user_ip'";
        $query_run = mysql_query($query);

        $query_num_rows = mysql_num_rows($query_run);
        if($query_num_rows==0){
            return false;
            }   else if($query_num_rows==1){
            return true;
        }
    }

    function ip_add($ip){
        $query = "INSERT INTO `DB_For_Sale_Dialog` VALUES('', '$ip') ";
        @$query_run = mysql_query($query);
    }

表示されるファイルは次のようになります。

<div id='div2'>
    <div class="DoYouHaveADirtBikeForSaleBox" id="DoYouHaveADirtBikeForSaleBox">
    <h2>Got A Dirt Bike You Want to Sell?</h2>
    <p class="DirtBikeForSaleBannerButton">
    <a href="http://classifieds.your-adrenaline-fix.com/add.php">Yea, Show Me How</a>
    </p>

    <p class="DirtBikeForSaleBannerButtonNoThanks">
    <a onclick="javascript:var div = document.getElementById('div2');div.parentNode.removeChild(div);">Nope, Get This Out of The Way</a></p> 
    </div>
    </div>

前回のスレッドで提供されたヘルプに非常に感謝しており、新しいスレッドを開始することを軽視するつもりはありませんが、現在問題を抱えているのは次のとおりです。

ボックスを閉じるために右のボタンにカーソルを合わせると、他のリンクのようにポインターが手の形に変わりません。

ダイアログ ボックスを閉じてページをスクロールすると、ボックスが再び表示されます。(ボックスを表示する機能は onscroll と呼ばれますが、ボックスを一度だけ表示したい.

誰かがこれについてコメントすることを気にしないなら、私は非常に感謝しており、あなたの反応を楽しみにしています.

どうもありがとう、スチュアートK

4

1 に答える 1

0

このアプローチを使用します。

<script type="text/javascript">
function loaddiv(thediv, thefile) {
    if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
    } else {
    xmlhttp = new ActiveXObject ('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById(thediv).innerHTML = xmlhttp.responseText;
            window.onscroll = null;
        }
    }
    xmlhttp.open('GET', thefile, true);
    xmlhttp.send();
}

</script>

------私はこの小さなテストを行いました--------------

function loaddiv() {
alert('hiiii');
window.onscroll = null;

        }

ボディコール:

<body onscroll="loaddiv();"> 

一度だけ動作します xD

サルドス。

于 2013-03-20T20:49:36.403 に答える