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

时间:2014-01-07 08:28:27

标签: javascript jquery

我正在尝试执行document.write()以显示以下3个条件中的每一个的动态new.php HREF(#pane1,#pane2,#pane3)。

目前,我可以获取要显示的URL,但只包含单引号(不会写出正确的值,它只会显示/写入文本)。如果我取出newURL变量周围的引号,我会得到“ReferenceError:newURL未定义”,并且整个Add New文本没有按照需要显示。

<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>

1 个答案:

答案 0 :(得分:2)

document write可以在文档就绪事件触发之前执行,该变量也在文档就绪功能范围中。尝试将var声明放在jquery范围之外:

var newURL="";

$(function(){
...

然后在底部:

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

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