2016-05-18 2 views
-1

Первый вопрос когда-либо здесь. Я немного нервничаю, чтобы сломать лед, пожалуйста, будьте снисходительны. Я только что закончил уроки CodeAcademy JS.Что делает (function() {})(); синтаксиса?

В следующем коде, который я обнаружил, чтобы переключить некоторый из моего #element, я предполагаю, что он переключает мой класс.property из его начального состояния в «block» и от «block» до его начального состояния. Поправьте меня если я ошибаюсь. Но если я этого не сделаю, может кто-нибудь объяснить мне, как это делается?

class.property === 'value' ? '' : 'value'; 

Question Mark in JavaScript - состояние? value-if-true: value-if-false

На этом этапе я понимаю, что '' равно 'none', это имеет смысл. Затем он, наконец, передал это свойство conditon value-if-true и value-if-false в мой #element (который запускается с некоторым onclick(). Но что, если теперь я хочу, чтобы моя функция также вызывала некоторую позицию раздела :?

Я пытался добавить, но это не удалось, я тоже не понимаю, почему использование (функция() {})();

(function (style) { 
    style.display = style.display === 'fixed' ? 'absolute' : 'fixed'; 
})(document.getElementById(section).style); 

Вот исходный код:.

function toggledisplay(elementID) { 
    (function (style) { 
     style.display = style.display === 'block' ? '' : 'block'; 
    })(document.getElementById(elementID).style); 
}; 
+0

Это ужасно код. Это должен был быть просто 'var style = document.getElementById (elementID) .style;' – Bergi

+0

Не знаете, что такое Вопрос? «Js' в OP не возвращает ожидаемый результат? – guest271314

+0

То, что вы используете, называется [Условным (тройным) оператором] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) –

ответ

1

fixed и absolute: position значения не display

function toggledisplay(elementID) { 
 
    var style = document.getElementById(elementID).style; 
 
    style.position = style.position === 'fixed' ? 'absolute' : 'fixed'; 
 
};
body { 
 
    position: relative; 
 
} 
 
#mydiv { 
 
    top: 50px; 
 
    left: 80px; 
 
    min-height: 100px; 
 
    width: 100px; 
 
    background-color: lightgrey; 
 
}
<button onclick="toggledisplay('mydiv')">Toggle</button> 
 
<div id="mydiv"></div>

Примечание: Там нет реальной необходимости иметь функцию IIFE, вы можете просто использовать переменную для обозначения style собственности

+0

Можете ли вы удалить это ненужное объявление функции внутри первого объявления функции. В буквальном смысле нет причин называть анонимную функцию, подобную этой, и это плохая практика программирования. –

+1

@AndrewBonsall да, сохранял это только потому, что OP имел это –

Смежные вопросы