|
как запустить addEventListener в зависимости от выбранной радиокнопки
Всем привет!
Помогите с решением!!! Есть скрипт:
function myFunc (e)
{
var evt = window.event || e,
obj = evt.srcElement || evt.target;
if (obj.tagName == 'TABLE') return;
while (obj.tagName != 'TD') obj = obj.parentNode;
obj.className = obj.className ? '' : 'act';
}
onload = function ()
{
var trg = document.getElementById ('myTBL');
if (document.addEventListener) trg.addEventListener ('click', myFunc);
else if (document.attachEvent) trg.attachEvent ('onclick', myFunc);
else trg.onclick = myFunc;
}
Есть несколько стилей: <style> #myTBL td.act { font:14px helvetica, arial, sans-serif; color : White; font-weight:800; background-color:darkGreen; } </style> <style> #myTBL1 td.act { font:14px helvetica, arial, sans-serif; color : #ccc; font-weight:800; background-color:RED; } </style> <style> #myTBL2 td.act { font:14px helvetica, arial, sans-serif; color : #666; font-weight:800; background-color:RED; } </style> Есть таблица в которой всё это должно работать и радиокнопки для назначения стиля который должна принимать ячейка: <body> <input type="radio" id="DarkGreen" name="COLOR" value="" onclick = function() { myTBL; }> <label for="DarkGreen">DarkGreen</label> <input type="radio" id="RED" name="COLOR" value="" onclick = function() { myTBL1; }> <label for="RED">RED</label> <input type="radio" id="Orange" name="COLOR" value="" onclick = function() { myTBL2; }> <label for="Orange">Orange</label> <table width="100%" height="100%" id="myTBL" class="select"> <tr> <td class="oAK" bgcolor="PaleGoldenrod"> AK </td> <td class="aKK" bgcolor="#BEBEBE"> KK </td> <td class="sKQ" bgcolor="PaleGreen"> KQ </td> <td class="sKJ" bgcolor="PaleGreen"> KJ </td> <td class="sKT" bgcolor="PaleGreen"> KT </td> </tr> <tr> <td class="oAQ" bgcolor="PaleGoldenrod"> AQ </td> <td class="oKQ" bgcolor="PaleGoldenrod"> KQ </td> <td class="aQQ" bgcolor="PaleGoldenrod"> </td> <td class="sQJ" bgcolor="PaleGreen"> QJ </td> <td class="sQT" bgcolor="PaleGreen"> QT </td> </tr> <tr> <td class="oAJ" bgcolor="PaleGoldenrod"> AJ </td> <td class="oKJ" bgcolor="PaleGoldenrod"> KJ </td> <td class="oQJ" bgcolor="PaleGoldenrod"> QJ </td> <td class="aJJ" bgcolor="#BEBEBE"> JJ </td> <td class="sJT" bgcolor="PaleGreen"> JT </td> </tr> </table> </body> Вопрос - КАК СДЕЛАТЬ ЧТОБЫ ОНКЛИК В ФУНКЦИИ ИСПОЛЬЗОВАЛ СТИЛЬ ВЫБРАННЫЙ РАДИОКНОПКОЙ!!! ПОМОГИТЕ ....... |
konart,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#myTBL td.DarkGreen
{
font:14px helvetica, arial, sans-serif;
color : White;
font-weight:800;
background-color:DarkGreen;
}
#myTBL td.Red
{
font:14px helvetica, arial, sans-serif;
color : #ccc;
font-weight:800;
background-color:Red;
}
#myTBL td.Orange
{
font:14px helvetica, arial, sans-serif;
color : #666;
font-weight:800;
background-color:Orange;
}
td{
height: 70px;
position: relative;
}
#myTBL td:hover:after {
background-color: #D2691E;
border-radius: 6px;
padding: 8px;
opacity: 1;
}
td.DarkGreen:after{ opacity:0;
content: "это DarkGreen";
position: absolute;
left: 70px;
}
td.Red:after{ opacity:0;
content: "это Red";
position: absolute;
left: 70px;
}
td.Orange:after{ opacity:0;
content: "это Orange";
position: absolute;
left: 70px;
}
</style>
<script src="https://cdn.polyfill.io/v1/polyfill.js?Element.prototype.closest"></script>
<script>
window.addEventListener('DOMContentLoaded', function() {
var table = document.querySelector('#myTBL'),
color = document.querySelectorAll('[name="COLOR"]');
table.addEventListener('click', function() {
var target = event.target;
if (target.closest("td")) {
[].forEach.call( color, function(el) {
el.checked && !target.classList.contains(el.id)? target.classList.add(el.id) : target.classList.remove(el.id);
});
}
});
});
</script>
</head>
<body>
<input type="radio" id="DarkGreen" name="COLOR" value="" checked="checked">
<label for="DarkGreen">DarkGreen</label>
<input type="radio" id="Red" name="COLOR" value="" >
<label for="Red">RED</label>
<input type="radio" id="Orange" name="COLOR" value="">
<label for="Orange">Orange</label>
<table width="100%" height="100%" id="myTBL" class="select">
<tr>
<td class="oAK" bgcolor="PaleGoldenrod">
AK
</td>
<td class="aKK" bgcolor="#BEBEBE">
KK
</td>
<td class="sKQ" bgcolor="PaleGreen">
KQ
</td>
<td class="sKJ" bgcolor="PaleGreen">
KJ
</td>
<td class="sKT" bgcolor="PaleGreen">
KT
</td>
</tr>
<tr>
<td class="oAQ" bgcolor="PaleGoldenrod">
AQ
</td>
<td class="oKQ" bgcolor="PaleGoldenrod">
KQ
</td>
<td class="aQQ" bgcolor="PaleGoldenrod">
QQ
</td>
<td class="sQJ" bgcolor="PaleGreen">
QJ
</td>
<td class="sQT" bgcolor="PaleGreen">
QT
</td>
</tr>
<tr>
<td class="oAJ" bgcolor="PaleGoldenrod">
AJ
</td>
<td class="oKJ" bgcolor="PaleGoldenrod">
KJ
</td>
<td class="oQJ" bgcolor="PaleGoldenrod">
QJ
</td>
<td class="aJJ" bgcolor="#BEBEBE">
JJ
</td>
<td class="sJT" bgcolor="PaleGreen">
JT
</td>
</tr>
</table>
</body>
</html>
|
:dance:
Большое спасибо!!! Быстро и без лишних слов!!!! Весьма благодарен! |
В развитие темы.
Можно ли на каждый цвет навесить подсказку (title) или что-то в этом роде. То есть чтобы все отмеченные одним цветом имели одну ОБЩУЮ подсказку (подсказка 1), отмеченные другим - другую (подсказка 2) и так далее? |
Цитата:
|
Вы имеете ввиду content: "это Orange"; ??? Я имел ввиду несколько другое. Когда ячейки закрашены то при подведении курсора к "красным" должна появляться подсказка "вы все в красном", при курсоре на ячейках с зелёным цветом - появляется подсказка "вы все зелёные". Контент я вижу, а вот в табличке подсказки не появляются!?
|
konart,
здесь есть надпись при наведении, после клика? если есть то меняйте надписи как вам нужно. |
Да, всё есть. Моя оплошность, не там смотрел. Ещё раз огромное СПАСИБО!!!
|
Поля форм не обязательно должны появляться внутри тега . Их можно разместить в любом месте страницы. Информацию из таких полей нельзя передавать на сервер (это возможно только для всей формы целиком), но когда мы делаем поля, которые обрабатывает JavaScript, нам обычно и не нужно передавать информацию из полей через submit.
<p><input type="text" value="abc"> (text)</p> <p><input type="password" value="abc"> (password)</p> <p><input type="checkbox" checked> (checkbox)</p> <p><input type="radio" value="A" name="choice"> <input type="radio" value="B" name="choice" checked> <input type="radio" value="C" name="choice"> (radio)</p> <p><input type="file" checked> (file)</p> |
Всем добрый день.
Здесь же появилась проблемка с которой мне не удаётся справиться, а именно: для красоты я добавил объём и тень в #myTBL и теперь подсказки оказались под закрашиваемой ячейкой. Причём подсказка сверху ячейки которую я закрашиваю первой, но ПОД всеми остальными. Пробовал и разные z-index, не забывал и про особенности с opacity, и то что позиционирование должно быть, но результата так и не добился. Вот коды...
#myTBL td.DarkGreen
{
font:14px helvetica, arial, sans-serif;
color : White;
font-weight:800;
background-color:DarkGreen;
background: linear-gradient(180deg, DarkGreen 95%, Black 5%);
box-shadow: 0.4em 0.4em 5px rgba(122,122,122,0.7); -webkit-box-shadow: 0.4em 0.4em 5px rgba(122,122,122,0.7);
border-radius: 5px 5px; -webkit-border-radius: 5px;
z-index: 1;
opacity:0.99;
}
td{
height: auto;/*23*/
position: relative;
cursor: url('images/cursor-question.png'), url('images/861313825289482149.png'), pointer;
opacity:0.99;
}
#myTBL td:hover:after {
background-color: Lime; /*стиль подсказки*/
font:14px helvetica, arial, sans-serif;
color : Black;
font-weight:400;
border-radius: 1px;
padding: 2px;/*8*/
opacity: 0.99;/*1*/
border-radius: 5px 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;
box-shadow: 0.4em 0.4em 5px rgba(122,122,122,0.7); -webkit-box-shadow: 0.4em 0.4em 5px rgba(122,122,122,0.7); -moz-box-shadow: 0.4em 0.4em 5px rgba(122,122,122,0.7);
z-index: 10;
position: fixed;
}
td.DarkGreen:after{
opacity:0;
content: "ALLIN";
position: fixed;
rigth: 50px;
bottom: 20px;
}
|
| Часовой пояс GMT +3, время: 00:38. |
|