javascript - 尝试在更新后从标签获取元素

标签 javascript php jquery html

我目前正在尝试从 html 标签后面的元素标签获取值 我的 java 脚本代码已更新“main”,以将 html 值包含在另一个 php 文件中。

  <main> 
       <?php include 'index.php'; ?>
  </main>

     <div id="footer">
     </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script type="text/javascript" src="homepage_J.js"></script>
    <!--<script type="text/javascript" src="homepage_A.js"></script>-->

    </body>
  </html>

上面是我的 php 文件中包含 html 正文的相关部分。我的 Java 脚本代码应该更改标记的当前值,然后扫描以获取新加载文件的某些值。

这是 JavaScript。

 $(document).ready(function(){

 $(window).on('hashchange', function(){
     var pageHash = window.location.hash.substring(1);
     console.log("page hash: "+pageHash);

     if( pageHash.length==0){
        pageHash = "index";
      }

     $('main').load(pageHash + ".php", pageFunctions() );
  });  

  $("nav a").on('click', function(event){
      event.preventDefault();
      var page = $(this).attr("href");
      console.log("Loading " + page);
      window.location.hash = formatForHash(page);
      $('main').load(page, pageFunctions());

  });



  $(window).trigger('hashchange',pageFunctions());


});




function pageFunctions() {
    var current_page =  $("#page").text(); //checks to see which file called the javascript



       // Switch case that will load appropriate function based on the file loaded(homepage)
  switch(current_page){
      case "INDEX":
               console.log("HOME loaded");
               break;
      case "INBOX":
               console.log("INBOX loaded");
               break;
      case "REGISTRATION":
              console.log("REGIS loaded");
              break;
      case "COMPOSE":
              compose();
              console.log("compose loaded");
              break;
      default:
              console.log("ERROR IN :" + current_page );
              break;
  }
}

function formatForHash (page)
{
   var hash = page.split('.');
   return hash[0];
} 

控制台日志用于帮助我调试代码。我从中得到的是,javascript 将之前加载到 main 的元素返回,而不是加载到它的当前值(我看到的不是我得到的)。

所以 var current_page 中的值不是我当前所在的页面。其不对应。因此,如果我离开索引来组合其中的值,则为“index”,而反向会给我一个值“compose”。

所以我的问题是如何在加载之后或之前获取页面上当前元素的值。

抱歉,这篇文章很长,希望我提供了足够的细节。

最佳答案

$('main').load(page, pageFunctions());

您立即执行 pageFunctions,而不是将其作为回调提供。去掉 (),以便加载完成时它将用作回调。

关于javascript - 尝试在更新后从标签获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984423/

相关文章:

javascript - 如何强制 Internet Explorer 应用 CSS 样式

javascript - Html 表行 ID 复选框

php - HTML 选择中的 MySQL 列

javascript - 用于 JQuery 登录的 HTML 表单或 div?

javascript - 使 div 的右侧而不是左侧对齐

javascript - 文本输入中的滑动文本

javascript - Redux updateElementSaga 已被取消。为什么?

Javascript 警报消息运行时错误对象预期

PHP/MYSQL : How to create image galleries that rotate/change during each page refresh/load

javascript - 不能在引号内使用 Angular 值