2012-01-31 2 views
3

В основном эта функция предназначена для хранения значения высоты элемента, который его вызывает, а затем, если эта высота соответствует элементу, она будет расширять свою высоту на 200 пикселей и, если она не соответствует сохраненному значению, она восстанавливает это значение (по существу, сокращение контейнера элементов). Как получить его для чтения из внешней таблицы стилей, чтобы получить var heightVal = parseInt(boxStyle.height);?Универсальная функция изменения размера javascript

function expand(e){ 
    var box = document.getElementById(e); 
    var boxStyle = box.style; 
    var heightVal = parseInt(boxStyle.height); 

    if(boxStyle.height == heightVal){ 
    boxStyle.height = heightVal + 200 +'px'; 
    } 
    else{ 
    boxStyle.height = heightVal; 
    } 

} 
+0

Почему ['offsetHeight'] (https://developer.mozilla.org/en/DOM:element.offsetHeight) не работает? –

+0

Я только что попробовал это, но я все еще разрабатываю кинки, поэтому я вернусь об этом ... Проблема в том, что значение 'offsetHeight' изменяется каждый раз, когда вы используете эту функцию, и поэтому высота элемента всегда растет. – person0

+2

Документы имеют коллекцию [styleSheets] (https://developer.mozilla.org/en/DOM/document.styleSheets), каждый лист имеет правила, и каждое правило имеет текст, связанный с ним. Вы можете найти соответствующее правило, затем прочитать связанный текст, который должен быть проанализирован, чтобы найти нужное свойство и его связанное значение. – RobG

ответ

0

Это мой пересмотренный ответ ... Этот код позволяет функцию, которая будет использоваться повсеместно повторно размер любых элементов высоты, независимо от того, хотите ли вы его, чтобы начать свернуто или развернуто и/или хотите ли вы его расширять или сворачивать. Я разработал эту функцию как улучшение ответа, который я ранее написал. На самом деле это результат другой функции, над которой я работал, чтобы изменить класс CSS, чтобы использовать анимацию без использования javascript или jquery. У меня теперь есть обе функции, работающие и универсальные!

Параметры довольно прямые ... box представляет элемент, который вы хотите изменить, hNew представляет собой высоту, в которую вы хотите изменить ее размер (может быть больше или меньше, чем текущая высота элемента, и функция все еще работает).

function resize_height(box, hNew){ 
    if(box.style.height != hNew || box.style.height == box.old_height){ 
    box.old_height = box.style.height 
    box.style.height = hNew; 
    } 
    else{ 
    box.style.height = box.old_height; 
    } 
}