为什么我的IF不能正常工作?

时间:2013-11-15 10:56:36

标签: javascript if-statement

我正在编写一个函数来获取"数据屏幕"已点击元素的属性(如果有任何要获取)并根据当前活动屏幕是否与所单击元素的屏幕相同或不同而采取某些操作。

问题是我的如果检查未定义的工作正常但忽略了第二个条件:

  • 如果我点击页面上的其他地方:没有。 :d
  • 如果我点击主页链接:没有。 :d
  • 如果我点击New Quest:它会在控制台上写入。 :(

感谢您的帮助!这是我的代码:

HTML

<li><a data-screen="home" href="#">Home</a></li>
<li><a data-screen="new-quest" href="#">New Quest</a></li>

<div id="container" data-screen="new-quest"></div>

JAVACSCRIPT

function getScreen(){
    var body = $('body'),
        activeScreen = $('#content').attr('data-screen'),
        screen;
    body.on('tap',function(e){
        screen = $(e.target).attr('data-screen');
        if(screen != undefined && screen != activeScreen){
            console.log('Target <data-screen>: ' + screen);
            console.log('Active Screen: ' + activeScreen);
        }
     });
}

条件应该是这样的:

screen获取所点击元素的data-screen值。 第一个条件: 如果screenundefined,则导致元素没有属性停止或继续。 第二个条件: 如果第一次检查没问题,它有一些&#34;屏幕&#34;在其上,检查来自screen的{​​{1}}是否为DIFERENT,这是页面容器的属性。

因为如果他们不喜欢我可以为页面呈现另一个内容。但它们是平等的,它一直在控制台上写,即使它应该停止。

2 个答案:

答案 0 :(得分:0)

实际上,你的代码(除了拼写错误)正如预期的那样工作,正如这个小提琴所证明的那样:

http://jsfiddle.net/LgMYd/

<div id="content" data-screen="home">更改为<div id="content" data-screen="new-quest">以测试其他情况。

编辑:我确实解决了上面答案中提到的拼写错误,但我认为这只是在删除所有$时所做的错误。

此外,正如评论中所述,活动屏幕仅在文档就绪时确定。如果您正在创建单个页面应用程序,这将无法按预期方式工作!在这种情况下,每次加载新视图时都必须更新活动屏幕变量。

答案 1 :(得分:-1)

变量中的错字?可能是流浪的$?

screen != undefined && $screen != activeScreen

成为

screen != undefined && screen != activeScreen