如何从另一个页面引用ID作为Javascript中的变量

时间:2012-08-07 03:53:59

标签: php javascript xml include

所以我终于通过这里所有人的大量帮助在我的画廊网站上取得了一些进展,谢谢。现在我有一个最后的希望非常简单的问题。首先,这是一个场景:

由于我是Javascript的新手我正在尝试学习javascript BRFORE我深入研究jquery所以我正在尝试做所有事情(我相信这个术语是)vanilla javascript。在没有进入所有代码的情况下,我为我的艺术作品创建了一个图库,该图库在页面顶部有一个拇指滑块,以及一个将显示所选图稿(包括其他视图,描述,标题等)的字段。我现在已经构建了一个名为“gallery / php”的页面,而不是单独使用多个数组,该页面包含将被调用到字段中的所有预构建的div(标题为“generic”)。使用innerHTML,我正在进行一个简单的调用,以便在选择所需的缩略图时,它会通过id调用相应的div,并将其写入“generic”div。

足够简单......

问题是我有大约40个这些,如果我做一个php包含并隐藏包含在隐藏的div中,而艺术品不显示它需要FOREVER加载页面,这似乎是一个非常糟糕的主意。我想要做的是修改我现在正在使用的函数,这样它就不会在当前页面上调用id,而是知道要引用哪个外部页面以及哪个div(基于id)来拉动和填充'generic' div与。该脚本目前看起来像这样:

function changeDiv(art) {
        viewer = document.getElementById('generic'),
        targetInfo = document.getElementById(art);
        viewer.innerHTML = targetInfo.innerHTML; 
}

我想做的是(无视语法):

function changeDiv(art) {
    viewer = document.getElementById('generic'),
    targetInfo = ***src = gallery.php, #(art);***
    viewer.innerHTML = targetInfo.innerHTML; 
}

我见过的唯一与我想做的事情类似的是jquery中的.load(),但我不知道如何将其转换回javascript。

1 个答案:

答案 0 :(得分:0)

确定!这是我的尝试。请注意,虽然这应该通过AJAX库(如jQuery)进行审查,但这不是OP所要求的。

**另外,我不知道gallery.php的设置,所以我尽了最大努力。

**我也知道这很糟糕,没有任何验证或其他任何好处,但这更像是一个概念证明。 (那些实用程序员的跟踪代码)

假设您将gallery.php设置为以下内容:

<?php
    $pull = $_GET["pull"];
    $gallery[0] = "<div>Your art work img tags here</div>";
    $gallery[1] = "<div>Some more art work</div>";
    //Pull from the changeDiv parameter in the JavaScript below.
    echo $gallery[$pull];
?>

我们将使用以下一些JavaScript:

var changeDiv = function(pull) {
    //Pull parameter indicates an array 
    //index within the gallery.php $gallery array

    var ajaxObj;

    //Our AJAX objet shall be declared
    if(window.XMLHttpRequest) {
        ajaxObj = new XMLHttpRequest();
    }
    else {
        ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
    }

    //When the ajaxObj changes it's ready 
    //state, do this stuff below
    ajaxObj.onreadystatechange = function() {
        //But only if the ready state is 
        //really ready and the status is good to go
        if(ajaxObj.readyState==4 && ajaxObj.status==200) {
            var response = this.responseText;
            document.getElementById("viewer").innerHTML=response;
        }
    }
    //Open the async connection to 
    //gallery.php and send your GET 
    //global (pull)
    ajaxObj.open("GET","gallery.php?pull="+pull,true);

    //Send it and pray
    ajaxObj.send();
}

http://www.smashingmagazine.com/2008/10/16/50-excellent-ajax-tutorials/ - AJAX的一些教程列表