Применение стиля к выбранному div
Есть несколько div-ов:
<div id="txt1" class="text">Текст</div> <div id="txt2" class="text">Текст</div> <div id="txt3" class="text">Текст</div> <div id="txt4" class="text">Текст</div> <div id="txt5" class="text">Текст</div> <div id="txt6" class="text">Текст</div> <div id="txt7" class="text">Текст</div> <div id="txt8" class="text">Текст</div> <div id="txt9" class="text">Текст</div> <div id="txt10" class="text">Текст</div> И есть выбор шрифта и размера шрифта: <div id="font"><select> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS">Comic Sans MS</option> </select></div> <div id="size"><select> <option value="10px">-10px-</option> <option value="12px">-12px-</option> <option value="14px">-14px-</option> <option value="16px">-16px-</option> <option value="18px">-18px-</option> <option value="20px">-20px-</option> <option value="24px">-24px-</option> <option value="28px">-28px-</option> <option value="32px">-32px-</option> <option value="36px">-36px-</option> <option value="40px">-40px-</option> <option value="48px">-48px-</option> <option value="54px">-54px-</option> </select></div> Вопрос: Как сделать чтоб при выделении одного div к нему можно было применить данные стили... Желательно через jquery т.к. он уже подключен и меньше будет кода... я вот что набросал: $(document).ready( function (){ $('.text').click(function(){ var i = this.Id;//получаем id элемента на котором кликнули }); }); Можно ли эту переменную "i" как-то вставить в событие onchange чтобы выбранный шрифт применялся к этому div <div id="font"><select onchange="document.getElementById('i').style.fontFamily=this.value"> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS">Comic Sans MS</option> </select></div> Или предложите может какой другой вариант |
вот так , как то =)
<!DOCTYPE HTML> <html> <head> </head> <body> <div id='style'> <select type-style='font-family'> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS" selected>Comic Sans MS</option> </select> <select type-style='font-size'> <option value="10px">-10px-</option> <option value="12px">-12px-</option> <option value="14px">-14px-</option> <option value="16px">-16px-</option> <option value="18px">-18px-</option> <option value="20px">-20px-</option> <option value="24px">-24px-</option> <option value="28px">-28px-</option> <option value="32px">-32px-</option> <option value="36px">-36px-</option> <option value="40px">-40px-</option> <option value="48px">-48px-</option> <option value="54px">-54px-</option> </select> </div> <div id='elems'> <div id="txt1" class="text">Текст</div> <div id="txt2" class="text">Текст</div> <div id="txt3" class="text">Текст</div> <div id="txt4" class="text">Текст</div> <div id="txt5" class="text">Текст</div> <div id="txt6" class="text">Текст</div> <div id="txt7" class="text">Текст</div> <div id="txt8" class="text">Текст</div> <div id="txt9" class="text">Текст</div> <div id="txt10" class="text">Текст</div> </div> <script> function _(selector){ return document.querySelectorAll(selector)[0]; } !function (){ var style, type ,value; var param = _('#style'); var elems = _("#elems"); param.onchange = function (e){ var target = e.target; type = target.getAttribute("type-style"); value = target.value; if (!value || value==" ")return; setStyle(); elems.className = "JS-Style-Generate"; } function setStyle () { if (!style){ create(); return; } var strFind = style.innerHTML; var regE = new RegExp(type+':.+;','ig'); if (strFind.search(regE) != -1){ strFind = strFind.replace(regE,type+':'+value+';') } else { strFind = strFind.replace(/\}/g,type+":"+value+";}"); } console.log(strFind.match(/\}/g)); style.innerHTML = strFind; } function create() { style = document.createElement('style'); style.innerHTML = ".JS-Style-Generate{"+type+":"+value+";}"; document.head.appendChild(style); } }(); </script> </body> </html> |
можно добавлять новые стили указав в атрибуте type-style , какое свойство менять
<select type-style='color'> <option value="">выберите цвет</option> <option value="red">red</option> <option value="green">green</option> <option value="blue">blue</option> <option value="yellow">yellow</option> <option value="orange">orange</option> <option value="black">black</option> </select> <!DOCTYPE HTML> <html> <head> </head> <body> <div id='style'> <select type-style='font-family'> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS" selected>Comic Sans MS</option> </select> <select type-style='font-size'> <option value="10px">-10px-</option> <option value="12px">-12px-</option> <option value="14px">-14px-</option> <option value="16px">-16px-</option> <option value="18px">-18px-</option> <option value="20px">-20px-</option> <option value="24px">-24px-</option> <option value="28px">-28px-</option> <option value="32px">-32px-</option> <option value="36px">-36px-</option> <option value="40px">-40px-</option> <option value="48px">-48px-</option> <option value="54px">-54px-</option> </select> <select type-style='color'> <option value="">выберите цвет</option> <option value="red">red</option> <option value="green">green</option> <option value="blue">blue</option> <option value="yellow">yellow</option> <option value="orange">orange</option> <option value="black">black</option> </select> </div> <div id='elems'> <div id="txt1" class="text">Текст</div> <div id="txt2" class="text">Текст</div> <div id="txt3" class="text">Текст</div> <div id="txt4" class="text">Текст</div> <div id="txt5" class="text">Текст</div> <div id="txt6" class="text">Текст</div> <div id="txt7" class="text">Текст</div> <div id="txt8" class="text">Текст</div> <div id="txt9" class="text">Текст</div> <div id="txt10" class="text">Текст</div> </div> <script> function _(selector){ return document.querySelectorAll(selector)[0]; } !function (){ var style, type ,value; var param = _('#style'); var elems = _("#elems"); param.onchange = function (e){ var target = e.target; type = target.getAttribute("type-style"); value = target.value; if (!value || value==" ")return; setStyle(); elems.className = "JS-Style-Generate"; } function setStyle () { if (!style){ create(); return; } var strFind = style.innerHTML; var regE = new RegExp(type+':.+;','ig'); if (strFind.search(regE) != -1){ strFind = strFind.replace(regE,type+':'+value+';') } else { strFind = strFind.replace(/\}/g,type+":"+value+";}"); } console.log(strFind.match(/\}/g)); style.innerHTML = strFind; } function create() { style = document.createElement('style'); style.innerHTML = ".JS-Style-Generate{"+type+":"+value+";}"; document.head.appendChild(style); } }(); </script> </body> </html> |
Это не совсем то... Нужно чтоб применялось к одному выбранному а не ко всем сразу... я вот что сделал но стиль применяется только после клика на див
<script language="JavaScript"> $(document).ready(Id); function Id(){ $('.text').dblclick(function(){ var i = this.id; document.getElementById(i).style.fontFamily=document.getElementById('font').value; document.getElementById(i).style.fontSize=document.getElementById('size').value; }); } </script> можно ли сделать чтоб сразу и изменялся как в твоем примере??? |
ну так разница?
устанавливаешь класс "JS-Style-Generate"; любому элементу на странице и все ок elems.className = "JS-Style-Generate"; щас только поправлю регулярки |
вроде все ок
<!DOCTYPE HTML> <html> <head> </head> <body> <div id='style'> <select type-style='font-family'> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS" selected>Comic Sans MS</option> </select> <select type-style='font-size'> <option value="10px">-10px-</option> <option value="12px">-12px-</option> <option value="14px">-14px-</option> <option value="16px">-16px-</option> <option value="18px">-18px-</option> <option value="20px">-20px-</option> <option value="24px">-24px-</option> <option value="28px">-28px-</option> <option value="32px">-32px-</option> <option value="36px">-36px-</option> <option value="40px">-40px-</option> <option value="48px">-48px-</option> <option value="54px">-54px-</option> </select> <select type-style='color'> <option value="">выберите цвет</option> <option value="red">red</option> <option value="green">green</option> <option value="blue">blue</option> <option value="yellow">yellow</option> <option value="orange">orange</option> <option value="black">black</option> </select> </div> <div id='elems'> <div id="txt1" class="text">Текст</div> <div id="txt2" class="text">Текст</div> <div id="txt3" class="text">Текст</div> <div id="txt4" class="text">Текст</div> <div id="txt5" class="text">Текст</div> <div id="txt6" class="text">Текст</div> <div id="txt7" class="text">Текст</div> <div id="txt8" class="text">Текст</div> <div id="txt9" class="text">Текст</div> <div id="txt10" class="text">Текст</div> </div> <div id='see'></div> <script> function _(selector){ return document.querySelectorAll(selector)[0]; } !function (){ var style, type ,value; var param = _('#style'); var elems = _("#elems"); param.onchange = function (e){ var target = e.target; type = target.getAttribute("type-style"); value = target.value; if (!value || value==" ")return; setStyle(); elems.className = "JS-Style-Generate"; } function setStyle () { if (!style){ create(); return; } var strFind = style.innerHTML; var regE = new RegExp(type+':\\w+;','i'); if (strFind.search(regE) != -1){ strFind = strFind.replace(regE,type+':'+value+';') } else { strFind = strFind.replace(/\}/,type+":"+value+";}"); } _('#see').innerHTML = strFind; style.innerHTML = strFind; } function create() { style = document.createElement('style'); style.innerHTML = ".JS-Style-Generate{"+type+":"+value+";}"; document.head.appendChild(style); } }(); </script> </body> </html> |
Ок... Попробую... Спасибо
|
строка 79
<!DOCTYPE HTML> <html> <head> </head> <body> <div id='style'> <select type-style='font-family'> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS" selected>Comic Sans MS</option> </select> <select type-style='font-size'> <option value="10px">-10px-</option> <option value="12px">-12px-</option> <option value="14px">-14px-</option> <option value="16px">-16px-</option> <option value="18px">-18px-</option> <option value="20px">-20px-</option> <option value="24px">-24px-</option> <option value="28px">-28px-</option> <option value="32px">-32px-</option> <option value="36px">-36px-</option> <option value="40px">-40px-</option> <option value="48px">-48px-</option> <option value="54px">-54px-</option> </select> <select type-style='color'> <option value="">выберите цвет</option> <option value="red">red</option> <option value="green">green</option> <option value="blue">blue</option> <option value="yellow">yellow</option> <option value="orange">orange</option> <option value="black">black</option> </select> </div> <div id='elems'> <div id="txt1" class="special">Текст</div> <div id="txt2" class="text">Текст</div> <div id="txt3" class="special">Текст</div> <div id="txt4" class="text">Текст</div> <div id="txt5" class="text">Текст</div> <div id="txt6" class="text">Текст</div> <div id="txt7" class="text">Текст</div> <div id="txt8" class="special">Текст</div> <div id="txt9" class="text">Текст</div> <div id="txt10" class="special">Текст</div> </div> <script> function _(selector){ return document.querySelectorAll(selector)[0]; } !function (){ var style, type ,value; var param = _('#style'); var elems = document.getElementsByClassName('special'); param.onchange = function (e){ var target = e.target; type = target.getAttribute("type-style"); value = target.value; if (!value || value==" ")return; setStyle(); //что бы задать определным div'aм можно так сделать for (var i = elems.length;i--;){ elems[i].className = "JS-Style-Generate"; } } function setStyle () { if (!style){ create(); return; } var strFind = style.innerHTML; var regE = new RegExp(type+':\\w+;','i'); if (strFind.search(regE) != -1){ strFind = strFind.replace(regE,type+':'+value+';') } else { strFind = strFind.replace(/\}/,type+":"+value+";}"); } style.innerHTML = strFind; } function create() { style = document.createElement('style'); style.innerHTML = ".JS-Style-Generate{"+type+":"+value+";}"; document.head.appendChild(style); } }(); </script> </body> </html> |
<select> <option value="">--Выберите шрифт--</option> <option value="Verdana">Verdana</option> <option value="Times New Roman">Times New Roman</option> <option value="Courier">Courier</option> <option value="Arial">Arial</option> <option value="Tahoma">Tahoma</option> <option value="Georgia">Georgia</option> <option value="Comic Sans MS">Comic Sans MS</option> </select> <select> <option value="10px">-10px-</option> <option value="12px">-12px-</option> <option value="14px">-14px-</option> <option value="16px">-16px-</option> <option value="18px">-18px-</option> <option value="20px">-20px-</option> <option value="24px">-24px-</option> <option value="28px">-28px-</option> <option value="32px">-32px-</option> <option value="36px">-36px-</option> <option value="40px">-40px-</option> <option value="48px">-48px-</option> <option value="54px">-54px-</option> </select> <div id="div"> <div id="txt1" class="text">Текст</div> <div id="txt2" class="text">Текст</div> <div id="txt3" class="text">Текст</div> <div id="txt4" class="text">Текст</div> <div id="txt5" class="text">Текст</div> <div id="txt6" class="text">Текст</div> <div id="txt7" class="text">Текст</div> <div id="txt8" class="text">Текст</div> <div id="txt9" class="text">Текст</div> <div id="txt10" class="text">Текст</div> </div> <script> window.onload = function () { var elems = document.body.children; var div = elems[2]; elems[0].onchange = function () { var elem = document.getSelection().anchorNode.parentNode; if (elem.parentNode.id == 'div') { elem.style.fontFamily = this.value; } } elems[1].onchange = function () { var elem = document.getSelection().anchorNode.parentNode; if (elem.parentNode.id == 'div') { elem.style.fontSize = this.value; } } } </script> |
Подскажите пожалуйста, почему не подгружается контент?
function incclik() { var cont = document.getElementById('contentBody'); var loading = document.getElementById('loading'); cont.xmlhttp = loading.xmlhttp; var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open( 'GET', 'content.php?setincfram=true', false ); xmlhttp.send( null ); if(xmlhttp.status == 200) { cont.xmlhttp = xmlhttp.responseText; } } // это функция... // а это на страничке: <div id="contentBody"> </div> <div id="loading" style="display: none"> Идет загрузка... </div> |
Часовой пояс GMT +3, время: 12:35. |