繁体   English   中英

我如何得到相反的结果?

[英]How do I get the opposite results?

Web开发/设计新手

我已经尝试这样做了一个星期,但似乎无法弄清楚,因此我希望可以得到一些帮助,这基本上是一个轻巧的开关

所以我想做的是,当我单击开关时,背景会更改颜色,文本和图像也会更改,反之亦然。

嗯,这是我的尝试,我可以通过它来更改背景颜色并切换图像,但是文本似乎没有变化,当我重新单击它时,它并没有恢复为原始状态

这些是图像: http : //oi59.tinypic.com/96xhec.jpg http://oi62.tinypic.com/350ug5l.jpg

HTML:

<img class="swoff" src="img/switch_off.png">

<span class="msg">Hey, who turn off the lights?</span>

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.0.min.js"><\/script>')    </script>

    <script src="js/main.js"></script>
</body>

CSS:

body {
font-family:'Raleway', sans-serif;
font-size:1em;
text-align:center;
margin-top:31%;
background:#151515;
}

.swoff {
display:block;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width:200px;
height:200px;
}

.msg {
color:#fff;
}

.lighttxt {
color:#3c3c3c;
}

使用Javascript:

$('.swoff').on('click', function() {

var dark = "Hey, who turn off the lights?";
var light = "It's so bright in here!";
var swon = "img/switch_on.png";

if($('img').attr('src',swon)) {

    $('body').css({'background-color':'#FFFFF2'});
    $('msg').html(dark);

}
else {

    $('img').attr(swon,'src')
    $('body').css({'background-color':'#151515'});
    $('msg').html(light);
}

我认为使用CSS类和使用可用的jQuery方法addClassremoveClass等)更容易。

在jQuery中,元素事件内部,快捷方式$(this)指向元素本身:

$('element').on('click', function(){ $(this).something(); });

另外,使用#定位元素ID( #id )和. 要定位类( .class ),我们仅对HTML标记( inputimgform等)省略此选项。


可运行的代码段:

 $('#switch').on('click', function() { var dark = "Hey, who turn off the lights?"; var light = "It's so bright in here!"; if( $(this).hasClass('swoff') ) { $(this).removeClass('swoff').addClass('swon'); $('body').css({'background-color':'#FFFFF2'}); $('#msg').html(light).removeClass('darktext').addClass('lighttxt'); } else { $(this).removeClass('swon').addClass('swoff'); $('body').css({'background-color':'#151515'}); $('#msg').html(dark).removeClass('lighttxt').addClass('darktext'); } }); 
 body { font-family:'Raleway', sans-serif; font-size:1em; text-align:center; background:#151515; } #switch { display:block; margin: auto; width:200px; height:200px; } .swoff { background-image: url('http://i.stack.imgur.com/I7Clv.png'); background-size: 100% 100%; } .swon { background-image: url('http://i.stack.imgur.com/vbKrW.png'); background-size: 100% 100%; } .darktxt { color:#fff; } .lighttxt { color:#3c3c3c; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="switch" class="swoff"></div> <span id="msg" class="darktxt">Hey, who turn off the lights?</span> 

我不确定这条线是什么意思:

if($('img').attr('src',swon)) {

如果您试图说“图像上的src属性是否与swon相同”,那么您需要这样做:

if($('img').attr('src')==swon) {

使用一个参数(即.attr('src') )调用attr会获得属性,然后使用两个参数(即.attr('src',swon) )来调用属性,并对其进行设置。 因此,您不必每次都设置它,而不是检查src是否等于swon。 这是它不进行切换的第一个原因。 您的另一行$('img').attr(swon,'src')也很$('img').attr(swon,'src') (错误的参数序列)。

还有更多要解决的问题,但希望能有所帮助。

注意:您缺少“});” 在JS的末尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM