首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么变量在这种情况下是未定义的?

为什么变量在这种情况下是未定义的?
EN

Stack Overflow用户
提问于 2013-04-27 00:50:42
回答 1查看 143关注 0票数 2

我有一个菜单,可以浏览特定页面上的幻灯片列表。使用下面的代码(HTML),一切都很顺利:

代码语言:javascript
复制
<ul class="dropdown">
      <li class="orange"><a href="#" data-jumpslide="2"><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">When to do it</div><div class="clear"></div></div></a></li>
      <li class="orange"><a href="#" data-jumpslide="3" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Key faces</div><div class="clear"></div></div></a></li>
      <li class="orange"><a href="#" data-jumpslide="5" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Functionalities</div><div class="clear"></div></div></a></li>
</ul>

jQuery是:

代码语言:javascript
复制
$('a[data-jumpslide]').each(function(idx, ele){
    $(ele).on('click', function(){
        var slideToJump = $(this).data('jumpslide');
        window.slider.go(false, slideToJump+1);
    });
});

正如您所看到的,每当单击链接时,它只会移动该特定页面上的幻灯片。

但现在我必须创建一个通用菜单,它可以在任何页面上移动滑块。因此,如果我是页面"Page 1“,并且我单击了"Page 2”处的第7张幻灯片的链接,则代码应打开page 2并移动到幻灯片7。

下面是我如何更改HTML的:

代码语言:javascript
复制
<ul class="dropdown">
      <li class="orange"><a href="page2.php" data-jumpslide="2" data-goto="page2"><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">When to do it</div><div class="clear"></div></div></a></li>
      <li class="orange"><a href="page2.php" data-jumpslide="2" data-goto="page2" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Key faces</div><div class="clear"></div></div></a></li>
      <li class="orange"><a href="page2.php" data-jumpslide="2" data-goto="page2" ><div class="list-item one-liner"><div class="left"><span id="functionality-icon"></span></div> <div class="right">Functionalities</div><div class="clear"></div></div></a></li>
</ul>

下面是我如何更改jQuery的:

代码语言:javascript
复制
$('a[data-jumpslide]').each(function(idx, ele){
    $(ele).on('click', function(e){
        e.preventDefault();
        var href = $(this).attr('href');
        var slideToJump = $(this).data('jumpslide');
        var gotoPage = $(this).data('data-goto');

        slideToJump++;
        if (gotoPage != '') {
              window.slider.go(false, slideToJump);
        }   
        else {
            var url = href+'#'+slideToJump;
            window.location = url;
        }
    });
});

var hash = window.location.hash;
$(document).ready(function(idx, ele){
  if (hash != '') {        
        window.setTimeout(function () {
          window.slider.go(false, hash);
        }, 2000);
    }
    else {
        console.log("No hash found  " + hash);
    }
});

因此,这里发生的情况是,当用户单击任何指向另一个页面(比如Page2)的链接时,它会重定向,在到达那里后,它会检查页面是否有散列。如果是这样,它会将幻灯片移动到该数字。

现在一切都好了,除了幻灯片没有移动到数字!即使代码是相同的,即使window.slider在其中获得了滑块,但它仍然没有移动。

当我在幻灯片更改回调函数上创建了一个console.log时,它给出了“未定义”。(代码如下)

代码语言:javascript
复制
    slideChangedCallBack: function(idx, slide) {

        if (console) console.log('slideChangedCallBack: '+slide.data('pagename'));
        if (s && s.t){
            s.pageName = slide.data('pagename');
            s.t();
        }

        ...
    }
EN

回答 1

Stack Overflow用户

发布于 2013-04-27 02:54:41

所以,对于任何想要确切改变的人,我这样做了:

代码语言:javascript
复制
var hash = window.location.hash.substring(1);

而不是这个:

代码语言:javascript
复制
var hash = window.location.hash;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16241449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档