如何在Javascript中将来自另一个页面的ID引用为变量


How to reference an ID from another page as a variable in Javascript

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

由于我是Javascript的新手,我正在尝试学习JavaScriptBRFORE,我深入研究了jquery,所以我试图用(我相信这个词是)普通的Javascript做所有事情。在不涉及所有代码的情况下,我为我的艺术作品制作了一个图库,在页面顶部有一个拇指滑块和一个显示所选艺术作品(包括其他视图、描述、标题等)的字段。我现在没有处理多阵列,而是构建了一个名为"gallery/php"的页面,其中包含了将被调用到字段中的所有预构建的div(标题为"generic")。使用innerHTML,我进行了一个简单的调用,这样当选择了所需的缩略图时,它会按id调用相应的div,并将其写入"generic"div。

很简单。。。

问题是,我有大约40个这样的页面,如果我做了一个php include,并将include隐藏在一个隐藏的div中,而艺术作品没有显示,那么加载页面将永远花费时间,这似乎是一个非常糟糕的主意。我想做的是修改我现在使用的函数,这样它就不会在当前页面上调用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。

好!这是我的尝试。请注意,虽然这可能应该通过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 的一些教程列表