为什么这个if条件总是为真(js)?

时间:2013-03-14 23:35:13

标签: javascript jquery if-statement append conditional-statements

当满足第一个if条件时,if中的if条件总是返回true。我知道这一点,因为它每次满足第一个if条件时都附加相同的div。我的JS知识有限;它可能是我遗失的明显事物。但是,在我看来,在第二个if语句被满足并执行之后,它的条件不应再次满足。 有谁知道是什么原因引起的? 任何帮助将不胜感激。

if (portfolioImg.attr('src') == 'image.png') 
{
    if (zoomImgHolder.width() != '300px') 
    {
        zoomImgHolder.append('<div id="myContent"></div>');
        zoomImgHolder.css(
        {
            'width' : '300px',
            'height' : '120px'
        });

        swfobject.embedSWF(
            "swfobject/test.swf", 
            "myContent", 
            "300", 
            "120", 
            "9.0.0", 
            "expressInstall.swf");

        zoomImgHolder.vAlign();
    } 
    else 
    {
        $('#myContent').css(
        {
            'visibilty' : 'visible'
        });
    }
}

3 个答案:

答案 0 :(得分:6)

As the documentation explains:

  

.css(width).width()之间的区别在于后者返回无单位像素值(例如,400),而前者返回单位完整的值(例如,400px)。

.width()始终返回一个数字<any number>永远不会等于300px

答案 1 :(得分:2)

jQuery中的width()函数返回一个整数值。因此,它永远不会等于字符串'300px'。

稍微修改一下你的代码:

if (zoomImgHolder.width() != 300)

答案 2 :(得分:2)

.width()返回一个数字,而不是字符串:

> 300 == '300px'
false

只需将其与300进行比较:

if (zoomImgHolder.width() != 300) {