Использование CSS атрибута в Javascript
Есть массив из td, каждый элемент которого имеет data-cell атрибут.
n - это произвольное число, с которого начинается значение атрибута. В CSS я могу обратиться к любому элементу следующим образом:
td[data-cell|="n"] {
background-color: red;
margin-top: 10px;
...
}
В JS мне нужно сделать условие:
if (i === td[data-cell|="n"]) {
......
};
i - любое число. Каким образом можно интерпретировать такую конструкцию CSS селектора в JS? |
Alexander Belov,
:-?
var td = document.querySelector('td[data-cell="'+i+'"]');
if(td) {};
http://learn.javascript.ru/dataset-api |
В своём варианте я могу сравнивать число i с началом атрибута data-cell, записанного в формате n-nn-nnnn. Соответственно, условие выполняется, если i === n
В Вашем варианте, как я понял, просто выбираются все элементы td с атрибутом data-cell. И консоль возвращает null к такому выражению. http://jsbin.com/zileriyaji/2/edit?h...console,output |
Alexander Belov,
прямую черту добавьте | Цитата:
|
рони,
Подскажите, пожалуйста, как обратиться к нужному элементу в такой ситуации: 1) У меня есть input, его value - это число от 1 до ... 2) Есть td в таблице с data-cell атрибутом в формате data-cell = "3-4-2015" (вместо цифры "3" может быть любое число). Я хочу обратиться к определённой td через введённое в input число.
var v = input.value;
var tdAttr = document.querySelector('td[data-cell|="'+i+'"]');
if(v === tdAttr) {
...}
Я использовал именно такую комбинацию селекторов для tdAttr, т.к. должна выцепляться только первая цифра / число до дефиса (в случае с примером выше - это цифра "три"). Т.о., если пользователь ввёл в input "3", мы, пробежавшись по массиву, должны получить td с атрибутом, начинающимся на "3". Но что-то не выходит так сделать. http://jsbin.com/tiwoguyaxi/1/edit?h...console,output |
Alexander Belov,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
td {
border: 1px solid blue;
height: 100px;
width: 100px;
}
td[data-cell|="2"] {
background-color: red;
}
input {
margin-bottom: 20px;
}
</style>
</head>
<body>
<form>
<input data-type="number" placeholder="Day" id="number" maxlength="2" >
</form>
<table>
<tr>
<td data-cell="1-01-15"></td>
<td data-cell="2-01-15"></td>
<td data-cell="3-01-15"></td>
<td data-cell="4-01-15"></td>
</tr>
<tr>
<td data-cell="5-01-15"></td>
<td data-cell="6-01-15"></td>
<td data-cell="7-01-15"></td>
<td data-cell="8-01-15"></td>
</tr>
<tr>
<td data-cell="9-01-15"></td>
<td data-cell="10-01-15"></td>
<td data-cell="11-01-15"></td>
<td data-cell="12-01-15"></td>
</tr>
<tr>
<td data-cell="13-01-15"></td>
<td data-cell="14-01-15"></td>
<td data-cell="15-01-15"></td>
<td data-cell="16-01-15"></td>
</tr>
</table>
<script>
var number = document.getElementById('number');
number.onchange = function() {
var v = this.value;
var tdAttr = document.querySelector('td[data-cell|="'+v+'"]');
if(tdAttr) { tdAttr.style.backgroundColor = 'red'
}
}
</script>
</body>
</html>
|
рони,
благодарю за помощь! |
| Часовой пояс GMT +3, время: 14:58. |