Логин: Пароль:
Регистрация
Показано с 1 по 1 из 1
  1. #1
    Потихоньку втягиваюсь
    Сообщений
    314
    Регистрация
    15.04.2014
    Репутация

    Поблагодарил(а) 211
    Получено благодарностей: 869 (сообщений: 224).

    Лекция по js

    1. Перед тем как найти элемент, нужно придумать переменную, в которую мы будем сохранять результат поиска. Имя переменной должно отражать ее содержимое, например если мы хотим найти все input'ы на странице, то логично назваить переменную как-нибудь так inputList (или input_list), если нам нужен например список DIV'ов, то переменную можно назвать divList (или div_list) и т.д. Если нам нужен 1 элемент, то переменную будем называть просто input или просто div
    2. Дальше нужно определить каким способом мы хотим найти элемент. Всего существует 3 способа поиска:
    getElementById() вернет нам 1 элемент с конкретным указанным ID, и мы не знаем какой элемент нам вернется.
    Код test = document.getElementById('test'); запишет в переменную test элемент с id=test.
    Теперь допустим внутри элемента test нам нужно найти элемент test2 для этого можно сделать так
    test2 = test.getElementById('test2');
    !!Поиск внутри элемента может не работать (в зависимости от браузера). В таких случаях нужно искать test2 так же как и test, а затем проверить является ли test родителем test2.
    Второй вариант поиска элемента - поиск по тэгу.
    inputs = document.getElementsByTagName('input');
    Этот способ всегда возвращает коллекцию элементов. Чтобы перебрать все элементы коллекции можно использовать цикл, например
    for(i=0; i<inputs.length; ++i) {
    console.log(inputs.item(i).nodeName);
    }
    Третий вариант поиска это поиск по классу
    elements = document.getElementsByClassName('myClass');
    Этот поиск возвращает коллекцию любых html-элементов у которых будет найден аттрибут class="myClass"
    Чтобы обратиться к конкретному элементу коллекции, нужно знать его порядковый номер и выполнить поиск по позиции в коллекции. Допустим input_list это коллекция, тогда если я хочу получить второй элемент коллекции я буду выполнять код
    secondElem = input_list.item(1); //в js как и в остальных языках нумерация элементов коллекции и нумерация элементов массива начинается с 0. Теперь допустим я хочу обратиться к первому потомку этого элемента, для этого можно использовать следующий код:
    child = secondElem.childNodes.item(0); //так мы обратились к первому потомку элемента.
    Если мне нужно узнать количество потомков конкретного элемента я буду использовать код secondElem.childNodes.length; или используя только что созданную переменную child.length
    Получив какой-то один элемент в переменную я могу сделать следующие действия:
    Допустим что у нас в переменной input хранится один <input>
    Я хочу проверить есть ли у него аттрибут type
    if(input.hasAttribute('type')) {
    console.log('true'); //выводим в консоль сообщение что аттрибут найден
    console.log(input.getAttribute('type')); //выводим в консоль значение аттрибута type
    } else {
    console.log(false); //ой, атрибут не найден
    attr = input.setAttribute('type', 'date'); //создадим аттрибут type="date"
    console.log(input); //выводим в консоль весь input чтобы проверить что аттрибут правда добавился
    }
    Теперь я хочу получить значение, которое записано в тэг
    elemValue = input.value;

    Список команд:
    document.getElementById(' '); //вернет конкретный элемент с тем id который мы указали
    document.getElementsByTagName(' '); //вернет коллекцию элементов по имени тэга
    document.getElementsByClassName(''); //вернет коллекцию элементов по имени класса
    .item(номер) //вернет элемент коллекции по его номеру
    .childNodes.item(номер) //вернет потомка элемента по его номеру
    .childNodes.length //вернет количество потомков
    .hasAttributes() //вернет true если у элемента есть какие-то аттрибуты
    .hasAttribute(' ') //вернет true если найден указанный аттрибут
    .getAttribute(' ') //вернет значение указанного аттрибута
    .setAttribute('name', 'value') //добавит аттрибут к элементу
    newElem = document.createElement(' ') //создаст элемент в документе
    .appendChild(newElem); //добавит один элемент в другой
    .removeChild(newElem); //удалит элемент (этот метод нужно вызывать у родителя элемента)
    .parentNode //вернет родителя элемента (может выполняться несколько раз, например elem.parentNode.parentNode)
    document.createTextNode(' ') //создаст новый текст, созданный текст нужно вставлять в родителя как обычный элемент
    .style.имяCssСвойства //получает сss свойство, например elem.style.width вернет ширину указанную в css. Нужно помнить что дефис использовать нельзя поэтому например свойство margin-top в JS нужно писать как marginTop
    .value //вернет значение элемента

    События в js
    onclick - срабатывает при клике на элемент
    oncontextmenu - срабатывает при клике на элемент правой кнопкой мыши
    onmouseover - при наведении мыши (в старых версиях onhover)
    onmousedown - при нажатии кнопки мыши
    onmouseup - при отжатии кнопки мыши
    onmousemove - при движении мыши
    onsubmit - при отправке формы
    onfocus - при фокусе элемента, например если курсор ввода текста находится в input
    onkeydown - нажатие клавиши на клавиатуре
    onkeyup - когда отпускаем кнопку на клавиатуре
    onload - когда загружен документ/элемент
    onunload - когда пытаемся выйти из браузера (в старых версиях может работать onexit и onclose)

    События можно вешать на окно window.onload = function() {alert('Hello');} или на элемент elem.onclick = function() {alert('hi');}

    Браузерная консоль
    console.log() выводит текст в консоль
    console.error() выводит сообщение с иконкой ошибки
    console.info() выводит сообщение с иконкой информации
    console.warn() выводит сообщение с иконкой предупреждения

  2. 1 пользователь сказал cпасибо appleGM за это полезное сообщение:

    Igorexa321 (14.12.2016)

 


Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
© MinecraftOnly