【问题标题】:How to reference an ID from another page as a variable in Javascript如何引用另一个页面的 ID 作为 Javascript 中的变量
【发布时间】:2012-08-07 03:53:59
【问题描述】:

在大家的大力帮助下,我终于在我的画廊网站上取得了一些进展,非常感谢。现在我有最后一个,希望是非常简单的问题。首先,这是场景:

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

够简单……

问题是我有大约 40 个,如果我做一个 php 包含并将包含隐藏在一个隐藏的 div 中而艺术品不显示它需要永远加载页面,这似乎是一个非常糟糕的主意.我想做的是修改我现在正在使用的函数,这样它就不会在当前页面上调用 id,而是知道要引用哪个外部页面以及要提取和填充“通用”的 div(基于 id) 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。

【问题讨论】:

  • 没有任何等效的 javascript,您必须使用纯 javascript ajax 或 jquery 的 ajax 或加载函数来做到这一点
  • 谢谢萨宾 - 关于我想要使用的 JavaScript 有什么想法吗?
  • 你可以使用jquery。这可以通过使用 jquery 的几行代码来完成。
  • 您需要对 PHP 脚本进行 ajax 调用。然后你必须遍历脚本输出来找到你的 targetInfo 并通过它的返回值设置变量
  • 谢谢萨宾。我现在试图避免使用 jquery,只是因为我想先了解基础知识,但我最终会转向 jquery。克里斯托弗,我真的是这方面的新手......你有这方面的任何例子,或者你可以指点我的教程吗?

标签: php javascript xml include


【解决方案1】:

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

【讨论】:

  • 谢谢克里斯托弗 - 这远远超出了我的理解,但我想我明白了。现在在顶部的 php 部分。是应该如何构建gallery.php 页面还是我添加到我的digital-artwork.php 页面的包含?
  • 谢谢 - 老实说,我仍在试图弄清楚如何“接受”答案。它一直告诉我,如果我没看错的话,我不能在 15 岁之前投票(?)
猜你喜欢
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2014-12-20
  • 2020-08-26
  • 2020-12-30
  • 1970-01-01
相关资源
最近更新 更多