2013-03-14 4 views
1

Когда выполняется условие first if, условие if внутри него всегда возвращает true. Я знаю это, потому что он добавляет один и тот же div каждый раз, когда первое условие выполняется. У меня ограниченное знание JS; это может быть что-то очевидное, что мне не хватает. Тем не менее, мне кажется, что после выполнения второго оператора if его выполнение не должно выполняться снова. Кто-нибудь знает, что может быть причиной этого? Любая помощь будет оценена по достоинству.Почему это условие всегда верно (js)?

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' 
     }); 
    } 
} 
+1

''visibilty': 'visible'' также имеет опечатку. –

ответ

6

As the documentation explains:

Разница между .css(width) и .width() является то, что последний возвращает блок меньше значения пикселя (например, 400) в то время как прежние возвращает значение с единицами интактных (например, 400px).

.width() всегда возвращает число и <any number> никогда не будет равна 300px.

2

Функция width() в jQuery возвращает целочисленное значение. Поэтому он никогда не может быть равен строке «300px».

Просто измените код немного:

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

.width() возвращает число, а не строка:

> 300 == '300px' 
false 

Просто сравните его 300:

if (zoomImgHolder.width() != 300) { 
Смежные вопросы