【问题标题】:jQuery get variable value from another html pagejQuery从另一个html页面获取变量值
【发布时间】:2014-05-09 10:20:26
【问题描述】:

我有一个包含此内容的 html 页面,名为“page1.html”:

<div>
    <div id="content">
        content
    </div>
    <script type="text/javascript">
        var x=5;
        var y=2;
    </script>
    <div id="other">Some other content</div>
</div>

在另一个 html 页面中,我想获取变量 "x" (5) 的值。 这是主页:

<!DOCTYPE html>
<html>
<head lang="en">
    <script type="text/javascript" src="app.js"></script>
</head>
<body>
    <div id="new_content"></div>
</body>
</html>

这是 app.js 脚本:

$(function(){
    $.get('page1.html', function(result){
        var obj = $(result).find('script');
        $(this).append($('#new_content').text(obj.html()));
    });
});

结果是“var x=5; var y=2;”。有没有办法从 var x 中只获取值 5?

感谢您的帮助。

编辑:我忘了写这只是一个示例,page1.html 中脚本中的代码比显示的更复杂。 app.js 中的对象“obj”是一个 [object htmlscriptelement],所以我想知道是否存在可用于直接访问 var x 的方法/att。

【问题讨论】:

    标签: javascript jquery ajax get


    【解决方案1】:

    或者你可以这样简单地使用localStorage:

    page1.html:

    localStorage.setItem("x", "value"); //setter
    

    page2.html:

    var x = localStorage.getItem("x"); //getter
    

    【讨论】:

      【解决方案2】:

      这似乎有点奇怪。

      我会尽力回答,但最好了解一下您为什么要这样做,因为可能有更好、更清洁的方法。

      根据您提供的信息,我的建议是将值分配给 DOM 对象,jQuery 旨在遍历 DOM 并对其进行操作,尝试解析原始 javascript 以提取变量确实不是一个好主意价值观。

      所以,第 1 页应该是这样的:

      <div>
          <div id="content">
              content
          </div>
          <div class="myData" data-x="5" data-y="2" />
          <div id="other">Some other content</div>
      </div>
      

      然后我的 jQuery 看起来像这样:

      $(function(){
          $.get('page1.html', function(result){
              var obj = $(result).find('script');
              var page1X = $(result).find('div.myData').data('x');
              var page1Y = $(result).find('div.myData').data('y');
          });
      });
      

      这只是伪代码,但希望你能明白。

      参考链接:

      【讨论】:

      • 嗨,我需要在我的索引页面中(按顺序)加载不同的页面,但我希望仅当当前加载的内容中的指定标志为时才允许用户转到下一页设置。
      • 并按照 jolyonruss 的建议并添加一个数据值一个 json 对象(由您需要的所有内容构建)?
      【解决方案3】:

      您可以尝试在粘贴代码之前注释 vat y=... 行,例如:

      $(function(){
          $.get('page1.html', function(result){
              var obj = $(result).find('script');
              $(this).append($('#new_content').text(obj.html().replace('var y','//var y')));
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-31
        相关资源
        最近更新 更多