对话结束的第二部分

时间:2013-03-20 18:56:37

标签: javascript html ajax

这是我在这里开始的第一个帖子:I Created A Dialog, Now How Can I Close It?

我正在创建一个新线程,因此我可以包含更新的代码。

首先,我想对所有在上面链接的帖子中帮助过我的人表示非常感谢,但正如我所说,我正在启动这个帖子,所以我可以添加代码示例。

我的一些页面上有一个对话框,显示在滚动上但是我遇到了一些麻烦。

此处可以看到此对话框:(显示的半透明框)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,但我只希望该框显示为ONCE。

如果有人不介意对此发表评论,我将非常感激,我当然期待您的回复。

非常感谢, Stuart K

1 个答案:

答案 0 :(得分: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

Saludos。