grafnet
User-
Posts
31 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by grafnet
-
Адаптивная верстка IE10+ Для себя сделал вывод, меню лучше делать два: одно полноразмерное, другое для мобильных устройств. Правда, в ie8 не отображается ровным счетом ничего(пустая страница), что для меня пока загадка. Может кто знает ответ?
-
Это так, но если бы можно было бы вдруг сделать на css - почему бы и нет? Но селектора, для подъема на уровень выше нету.
-
Есть разметка пагинации. <div class="pagination"> <a class="page-btn page-btn-prev" href="#">Предыдущая</a> <a class="page-btn current-page" href="#">1</a> <a class="page-btn" href="#">2</a> <a class="page-btn" href="#">3</a> <a class="page-btn page-btn-next" href="#">Следующая</a></div>Можно ли как-то прятать/делать видимыми page-btn-prev и page-btn-next в зависимости от позиции current-page используя css селекторы? Если вторая ссылка с классом current-page - не показывать page-btn-prev Если предпоследная ссылка с классом current-page - не показывать page-btn-next Вот так начал .pagination .page-btn-prev,.pagination .page-btn-next{ display: none;}.pagination a:nth-child(2):not(.current-page) /* как-то обратися к .page-btn-prev*/ { display: inline-block;}.pagination a:nth-last-child(2):not(.current-page) /* как-то обратися к .page-btn-next*/ { display: inline-block;}
-
Разобрался, нужно было лишь подключить classList.js до основной js логики, а не после.
-
1. В js логике есть classList.add, для его работы в IE8 использую полифил classList.js. Однако, функции, которые используют classList.add по прежнему не отрабатывают(классы не добавляются), как если бы полифила и не было. 2. Делаю эмуляцию поддержки nth-child для IE8, вот таким способом хочу добавить дополнительный класс для ie8 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script><script>$('.form input:nth-child(2n)').addClass('nth-child-2n');</script><style> .nth-child-2n { margin-right: 0; }</style>Но IE напрочь не собирается реагировать на это, и класс nth-child-2n не добавляться. Ошибок в js IE не видит. Быть может, кто-то сталкивался с подобным?
-
1. Есть очень простая проверка полей в форме авторизации loginForm.addEventListener("submit", function(event) { if (!(inputLogin.value && inputPassword.value)) { event.preventDefault(); console.log("Введите логин и пароль") } else { ... }});Это работает до тех пор, если не добавить атрибут required для input, т.е. выполнение js условия блокируется. Как быть в таких случаях, когда нужно, чтобы и required присутствовал и событие выполнялось? 2. Если поля незаполненные - добавляю ксласс ошибки модальному окну. Но при повторном попытке отправки формы - класс modal-error не удаляется.
-
Можно также подробней разъяснить этот момент: Т.е. вызывается снова deepEqual с передачей свойств, а как дальше происходит само сравнение этих свойст?
- 5 replies
-
- рекурсия
- глубокое сравнение
-
(and 1 more)
Tagged with:
-
awdf, спасибо! Было бы чрезвычайно круто, если бы Вы еще расписали логику решения заданий словами. Например во втором задании мне не полностью потянет этот участок и еще другие моменты. for(var property in obj1) { if(obj1.hasOwnProperty(property) && obj2.hasOwnProperty(property)) { if(!deepEqual(obj1[property], obj2[property])) { equals = false; } } else { equals = false; } }
- 5 replies
-
- рекурсия
- глубокое сравнение
-
(and 1 more)
Tagged with:
-
Выполяю задания из книги по js: 1. Списки Списки удобны тем, что они могут делиться частью своей структуры. Например, можно сделать два списка, {value: 0, rest: list} и {value: -1, rest: list}, где list – это ссылка на ранее объявленную переменную. Это два независимых списка, при этом у них есть общая структура list, которая включает три последних элемента каждого из них. Кроме того, оригинальный список также сохраняет свои свойства как отдельный список из трёх элементов. Напишите функцию arrayToList, которая строит такую структуру, получая в качестве аргумента [1, 2, 3], а также функцию listToArray, которая создаёт массив из списка. Также напишите вспомогательную функцию prepend, которая получает элемент и создаёт новый список, где этот элемент добавлен спереди к первоначальному списку, и функцию nth, которая в качестве аргументов принимает список и число, а возвращает элемент на заданной позиции в списке, или же undefined в случае отсутствия такого элемента. Если ваша версия nth не рекурсивна, тогда напишите её рекурсивную версию. console.log(arrayToList([10, 20]));// → {value: 10, rest: {value: 20, rest: null}}console.log(listToArray(arrayToList([10, 20, 30])));// → [10, 20, 30]console.log(prepend(10, prepend(20, null)));// → {value: 10, rest: {value: 20, rest: null}}console.log(nth(arrayToList([10, 20, 30]), 1));// → 20C функцией arrayToList я разобрался, а вот в остальным - никак. 2. Глубокое сравнение Оператор == сравнивает переменные объектов, проверяя, ссылаются ли они на один объект. Но иногда полезно было бы сравнить объекты по содержимому. Напишите функцию deepEqual, которая принимает два значения и возвращает true, только если это два одинаковых значения или это объекты, свойства которых имеют одинаковые значения, если их сравнивать рекурсивным вызовом deepEqual. Чтобы узнать, когда сравнивать величины через ===, а когда – объекты по содержимому, используйте оператор typeof. Если он выдаёт “object” для обеих величин, значит нужно делать глубокое сравнение. Не забудьте об одном дурацком исключении, случившемся из-за исторических причин: “typeof null” тоже возвращает “object”. var obj = {here: {is: "an"}, object: 2};console.log(deepEqual(obj, obj));// → trueconsole.log(deepEqual(obj, {here: 1, object: 2}));// → falseconsole.log(deepEqual(obj, {here: {is: "an"}, object: 2}));// → true
- 5 replies
-
- рекурсия
- глубокое сравнение
-
(and 1 more)
Tagged with:
-
Но, в таком случе, список вариантов автоматически не выпадет. Жать руками ctrl + space? Не очень то удобно. Остается писать по пол тега и жать tab Зачем же тогда редактор сам асоциирует автокомплит с "<", если в итоге получается результат вида:"<<...></...>"?
-
Решил попробовать Sublime Text 2(build:2181), но возникла такая проблема... Например, ставим открывающуюся скобку "<" -> появляются варианты автокомплита -> жмем "d" -> жмем enter В итоге получаем такой результат: <<div></div> То есть, имеем лишнею скобку, которая, сообственно, и запускала автокомплит. Может кто сталкивался с такой проблемой?
-
Вместо preg_split() лучше воспользоваться explode().
-
Я не увидел того, чтобы <select> заменялся на другие элементы, перед ним только <span> с выбранным пунктом появляется. В общем - обойдусь и без стилизации <select>.
-
document.myform.submit() - работает в Opera/FF, но не работает в Chrome/IE
grafnet replied to Boron's question in JavaScript
Попробуй мой вариант. -
В общем сделал отправку формы при клике по пункту в списке: <script language ="JavaScript"> <!-- function paramChange() { document.form.submit(); } --> </script> <form action="#" method="POST" name="form"> <select onChange="paramChange()" name="num"> <option value="5" selected>Show 5</option> <option value="10">Show 10</option> <option value="25">Show 25</option> <option value="30">Show 30</option> </select> </form> Но для стилизации списка уже прикрутил скрипт custom-form-elements.js И как только дописываю к <select> class="styled" отправка формы перестает работать. Может кто сталкивался с этим скриптом и знает как решить данную проблему, или как-то изменить сам способ отправки форми(без нажатия submit)?
-
Спасибо. Теперь все работает так, как надо.
-
Собственно нашел такой скрипт выделения всех чекбоксов: <script type="text/javascript"> function setChecked(obj) { var str = document.getElementById("text").innerHTML; str = (str == "отметить" ? "снять" : "отметить"); document.getElementById("text").innerHTML = str; var check = document.getElementsByName("id[]"); for (var i=0; i<check.length; i++) { check[i].checked = obj.checked; } } </script> <form action="" method="post"> Что Вас больше всего интересует на нашем сайте?<br /> <input type="checkbox" name="id[]" value="1" /> Справочник HTML<br /> <input type="checkbox" name="id[]" value="2" /> Описание свойств CSS<br /> <input type="checkbox" name="id[]" value="3" /> Примеры готовых JavaScript`ов <p> <input type="checkbox" name="set" onclick="setChecked(this)" /> <span id="text">отметить</span> все </p> </form> Все бы хорошо, да только нужно, чтобы все чекбоксы отмечались ссылкой, которая будет меняться на "отметить все" и "снять все". Может у кого-то есть варианты как это можно реализовать?
-
Дело в том, что я просто пытаюсь реализовать ту или иную задачу на реальных примерах. То есть, мне не сколько нужен готовый скрипт, сколько понять как он работает, и как его можно сделать. Но самому, пока что, не очень удается, вот и спрашиваю... Ок, пойду опять читать о ругулярках.
-
Ага, с этим понятно. Хотел вывести все имеющиеся совпадения <table border="1"> <?php $url = "<td><a>первая</a></td>текст текст<td><a> <img src='/img/icons/img.png' title='img.png' alt='img.png'> вторая</a></td>текст текст<td><a>третяя</a></td>текст текст<td><a>Пятая</a></td>текст текст<td><a>Пятая!</a></td>текст текст<td><a>Третяя!</a></td>текст текст"; $file = file_get_contents($url); preg_match_all ("#<td.*?><a.*?>\s*([^<].*?)</a></td>(.+)$#us", $file, $usr); $c = 1; foreach ($usr[1] as $f) { echo "<tr><td>$c</td><td>$f</td></tr>"; $c++; } ?> </table> Но получил кучу предупреждений, ничего не получилось. Как же это сделать правильно?
-
Ошибка получается <?php $file = "<table> <tr> <td>Нужно</td> <td>Не нужно</td> <td>Не нужно</td> </tr> <tr> <td>Нужно</td> <td>Не нужно</td> <td>Не нужно</td> </tr> <tr> <td>Нужно</td> <td>Не нужно</td> <td>Не нужно</td> </tr> </table>"; $found=array(); for ($__=0; $__ < 10; $__++) { $fnd=preg_match("/<tr>\s*<td>(.+?)</td>\s*<td>.+?</td>\s*<td>.+?</td>\s</tr>/is", $file, $usr); if (!$fnd) break; $found[] = $usr[1]; $file = $usr[2]; } foreach ($found as $f) echo "$f<br>\n"; ?> Warning: preg_match(): Unknown modifier 't' in... Если вместо разделителя "/" поставить "#", то $fnd пуста.
-
Теперь ок. А как быть с такой структурой? <table> <tr> <td>Нужно</td> <td>Не нужно</td> <td>Не нужно</td> </tr> <tr> <td>Нужно</td> <td>Не нужно</td> <td>Не нужно</td> </tr> <tr> <td>Нужно</td> <td>Не нужно</td> <td>Не нужно</td> </tr> </table> Где нужно получить, например, первое совпадение из каждой <td></td>, но нет ничего, чем бы нужная ячейка могла отличаться от ненужной.
-
Вот спасибки, теперь вывод, так как надо А регулярка что-то не сработала, если есть пробел, то <img> все равно попадает. <?php $file = "<td><a>первая</a></td>текст текст<td><a> <img src='/img/icons/img.png' title='img.png' alt='img.png'> вторая</a></td>текст текст<td><a>третяя</a></td>текст текст<td><a>Пятая</a></td>текст текст<td><a>Пятая!</a></td>текст текст<td><a>Третяя!</a></td>текст текст"; $found=array(); for ($__=0; $__ < 3; $__++) { preg_match("#<td.*?><a.*?>\s*([^<].*?)</a></td>(.+)$#us" , $file, $usr); $found[] = $usr[1]; $file = $usr[2]; } foreach ($found as $f) echo "$f<br>\n"; ?>
-
Поправил вот так: "#<td.*?><a.*?>(.[^<].*?)</a></td>(.+)$#us", так как, между <a> и <img> оказался пробел. А можно вывеси все содержимое массива $found как через print_r, только без Array и индексов массива?
-
Работает. Я только переносы строк не сделал. Да, все верно, это я накосячик... А если структура будет такой: <td> <a>первая</a> </td> <td> <a> <img src='name.png'> вторая </a> </td> <td> <a>третья</a> </td> То бишь, во вторую ссылку попадет еще и ненужное изображение. А как можно поправить регулярку, что бы исключить его попадание?
-
Я правильно понимаю, что в массив $found[] должны попасть первые три совпадения, и с последующим выводом их через $found[0], $found[1] и так далее? Но что-то я получаю просто три одинаковый первых совпадения...