Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法通过hashchange将URL正确写入HREF_Javascript_Jquery - Fatal编程技术网

Javascript 无法通过hashchange将URL正确写入HREF

Javascript 无法通过hashchange将URL正确写入HREF,javascript,jquery,Javascript,Jquery,我正在尝试执行document.write()以显示以下3种情况下的动态new.php HREF(#pane1、#pane2、#pane3) 目前,我可以获取要显示的URL,但只能使用包含的单引号(这不会写入正确的值,它只是按照预期显示/写入文本)。如果我去掉newURL变量周围的引号,就会得到“ReferenceError:newURL未定义”,并且整个addnew文本不会按需要显示 <script type="text/javascript"> $(function(

我正在尝试执行document.write()以显示以下3种情况下的动态new.php HREF(#pane1、#pane2、#pane3)

目前,我可以获取要显示的URL,但只能使用包含的单引号(这不会写入正确的值,它只是按照预期显示/写入文本)。如果我去掉newURL变量周围的引号,就会得到“ReferenceError:newURL未定义”,并且整个addnew文本不会按需要显示

<script type="text/javascript">
      $(function(){

        var newURL="";

        // Bind the event.
        $(window).hashchange( function(){

          if(location.hash=="#pane1") {
            alert( location.hash );
            newURL="new1.php";
          }

          if(location.hash=="#pane2") {
            alert( location.hash );
            newURL="new2.php";
          }

          if(location.hash=="#pane3") {
            alert( location.hash );
            newURL="new3.php";
          }

        })

        // Trigger the event (useful on page load).
        $(window).hashchange();

      });

    </script>

    <li>
      <script type="text/javascript">
        document.write('Add New'.link('newURL'));
      </script>
    </li>

$(函数(){
var newURL=“”;
//绑定事件。
$(窗口).hashchange(函数(){
if(location.hash==“#pane1”){
警报(location.hash);
newURL=“new1.php”;
}
if(location.hash==“#pane2”){
警报(location.hash);
newURL=“new2.php”;
}
if(location.hash==“#pane3”){
警报(location.hash);
newURL=“new3.php”;
}
})
//触发事件(在页面加载时有用)。
$(window.hashchange();
});
  • document.write('addnew'.link('newURL'));

  • 可以在触发document ready事件之前执行
    文档写入
    ,该变量也在document ready功能范围内。尝试将var声明置于jquery范围之外:

    var newURL="";
    
    $(function(){
    ...
    
    然后在底部:

    <script type="text/javascript">
            document.write('Add New'.link(newURL));
          </script>
    
    
    document.write('addnew'.link(newURL));
    

    或者也可以将其包装在文档就绪函数中,以确保在触发窗口对象上的hashchange事件后执行这一行。

    我认为最后一行不需要单引号,因为newURL是可变的,还可以尝试通过添加;在})之后,
    var newURL
    被包装在一个函数中,因此作用域在该函数中。
    document.write()
    在全局范围内…非常感谢Alex,移动变量声明确实消除了错误。关于显示“添加新”链接,我还不能让它工作。我尝试了.on('hashchange',function(){和document ready,两者都有相同的结果,即显示添加新文本,但这是页面上唯一加载的内容,页面挂起/从未加载。再次感谢。