Что мне нужно, так это перебрать dom в некотором начальном элементе, а затем пройти все элементы ниже начального элемента.
Вот что я делал до сих пор.
function iterDomFromStartElem = function(startElem, callBackFunc) {
if (startElem !== null) {
var items = startElem.getElementsByTagName("*");
for (var i = 0; i < items.length; i++) {
callBackFunc(items[i]);
}
}
}
Причина, по которой мне нужно перебирать dom с некоторого начального элемента, заключается в том, что наша команда недавно получила запрос на реализацию изменения размера шрифта; тем не менее, мы разработали сайт статически с размером шрифта во многих разных местах с использованием пикселей. Я понимаю, что более простой подход состоит в том, чтобы реорганизовать существующий код, установить статический размер шрифта в корне страницы и использовать em / проценты в другом месте, так что, если владелец бизнеса хочет иметь элемент управления изменением размера на страницах, все, что нам нужно сделать, это увеличить размер шрифта в одном месте. Этот рефакторинг потребовал бы много часов, и мне было поручено использовать это наименьшее количество человеко-часов.
Итак, у меня есть обратный вызов, определенный так,
function resizeFont(startElem, scale) {
iterDomFromStartElem(startElem, function(node) {
// get current size of node, apply scale, increase font size
}
}
Использование этого необработанного javascript будет работать, но у меня возникают проблемы с получением размера шрифта, если он объявлен внутри класса css.
Я знаю, что у jquery есть свойство css, и если бы у меня был объект jquery, я мог бы сделать $ (this) .css (....), поэтому
когда я вызываю callBackFunc (items [i]), как я могу преобразовать items [i] в объект jquery, чтобы в моей функции обратного вызова я мог выполнять node.css (......)?
Полагаю, я мог бы сделать $ (items [i] .id), возможно, это было бы самым простым.
Есть ли более простой способ с помощью javascript определить размер шрифта, даже если этот размер шрифта объявлен в классе css и этот класс css присоединен к элементу?