События JavaScript (5)

искусственный интеллект
  • DOM начиная
  1. DOM — это модель HTML-страницы. Каждый тег рассматривается как объект. JavaScript может программно управлять такими элементами, как текстовые поля и слои на веб-странице, вызывая свойства и методы в DOM. Например, манипулируя DOM-объектом текстового поля, вы можете прочитать значение в текстовом поле и установить значение в текстовом поле. JavaScript→DOM — это C#→ADO.NET. DOM — это некоторые классы и функции, которые позволяют JavaScript манипулировать элементами управления Html-страницы.
  2. DOM, как и WinForm, программируется через события, свойства и методы.
  3. CSS+JavaScript+DOM=DHtml
  • DOM Модель
  • событие
  1. В DOM много событий. Демо:

    1. //Обратите внимание на объем тела. Областью действия тела является область содержимого в теле. Если содержимого нет, событие не может быть инициировано.
    2. Иногда код ответа события больше, его необходимо поместить в функцию:

<script ****type="text/javascript">

****function userMouseDown () {

****alert ('Веб-страница была сломана вами>_);

****alert («Мне с тобой весело~~»);

}

****</script>

Примечание: В οnmοusedοwn=“userMouseDown();” круглые скобки после userMouseDown не могут быть потеряны (нельзя записать как οnmοusedοwn=“userMouseDown”), с () означает вызов функции, а непосредственное написание имени функции означает установку события обработчик userMouseDown. Можно сказать, что после щелчка будет запущен метод,

onclick=f1; означает, что метод, запускаемый onclick, равен f1.

οnclick="f1()" означает, что f1 вызывается в методе, запускаемом onclick

onclick=обработчик после возникновения события.

onclick="     f(this);       " "; //Метод f() вызывается в обработчике события onclick

οnclick=f;//Обработчиком этого события является метод f().

  • Динамически устанавливаемые события
  1. JavaScript также может динамически устанавливать события, как в .Net, Button.Click+=…

<script type="text/javascript">

function F1() {     alert('In F1');     }

function F2() {     alert('In F2');     }

</script>

  1. Примечание: οnclick="document.οnclick=F1;" Не добавляйте здесь круглые скобки к F1 и добавляйте круглые скобки, чтобы запрограммировать вызов функции F1(), и назначьте возвращаемое значение для document.onclick.

Область действия document.body.onclick ограничена телом

document.onclick распространяется на весь документ.

  • всплывающее окно событий
  1. Всплывание событий: если элемент A вложен в элемент B, то при нажатии A будет запущено не только событие onclick A, но и событие B onclick. Порядок срабатывания "наизнанку". Проверка: добавьте таблицу на страницу, tr в таблицу, td в tr и p в td и добавьте ответ на событие onclick в p, td, tr и таблицу, например:

<table οnclick="alert('table onclick');">

        <tr οnclick="alert('tr onclick');">

            <td οnclick="alert('td onclick');"><p οnclick="alert('p onclick');">aaaa</p></td>

            <td>bbb</td>

        </tr>

    </table>

  1. Отменить всплывающую подсказку события: окно. event . cancelBubble **= true **;//IEправописание ниже.

<table οnclick="alert('table onclick');">

        <tr οnclick=" window.event.cancelBubble = true;alert('tr onclick');">

            <td οnclick="alert('td onclick');">

                <p οnclick=" window.event.cancelBubble = true;alert('p onclick');"> aaaa</p>

            </td>

            <td>

                bbb

            </td>

        </tr>

    </table>

  1. window.onload и загрузка тела

1. Эффект от обоих точно такой же, и они запускаются после загрузки содержимого страницы.

2. Поскольку в веб-странице нет окна, напишите в теле onload

3. Рекомендуется использовать window.onload// для эффективного использования js-скрипта

4На самом деле это должен быть document.onload, но все браузеры реализуют его для объекта окна.

  • в случае this
  1. это в случае. В дополнение к возможности использовать event.srcElement в функции ответа на событие, это говоритсобытие происходитэлементы управления. Это можно использовать только в функции ответа на событие, чтобы получить элемент управления, в котором произошло событие. Его нельзя использовать в функции, вызываемой функцией ответа на событие (это представляет объект окна). Если вы хотите использовать это, вы должны передать это к функции или используйте event.srcElement, например:

 <html xmlns="www.w3.org/1999/xhtml">

<head>

    <title></title>

    <script type="text/javascript">

        function f3() {

            alert(event.srcElement.value);

        }

        function f4() {

//Это представляет объект окна в вызывающей функции события

            alert(this.location.href);

            alert(this.value);

        }

        window.onload = function () {

            btn5.onclick = function () {

                alert(event.srcElement.value);

            }

            btn6.onclick = function () {

//В функции ответа на событие это представляет объект, который в данный момент запускает событие

                alert(this.value);

            }

        }

    </script>

</head>

<body>

    <input id="btn1" type="button" value="btn1" οnclick="alert(event.srcElement.value)" /><br />

    <input id="btn2" type="button" value="btn2" οnclick="alert(this.value)" /><br />

    <input id="btn3" type="button" value="btn3" οnclick="f3()" /><br />

    <input id="btn4" type="button" value="btn4" οnclick="f4()" /><br />

     <!--<input id="Button1" type="button" value="btn4" οnclick="f4(this)" />--><br />

    <input id="btn5" type="button" value="btn5" /><br />

    <input id="btn6" type="button" value="btn6" /><br />

</body>

</html>

  1. (*) Семантика this и event.srcElement различна, это объект, который в данный момент прослушивает событие, а event.srcElement — это объект, вызвавший всплытие события: событие, например:

     <table οnclick="alert(event.srcElement.innerHTML);">

        <tr οnclick="alert(event.srcElement.innerHTML);">

            <td οnclick="alert(event.srcElement.innerHTML);"><p οnclick="alert(event.srcElement.innerHTML);">aaaa</p></td>

            <td>bbb</td>

        </tr>

    </table>

     <table οnclick="alert(this.innerHTML);">

        <tr οnclick="alert(this.innerHTML);">

            <td οnclick="alert(this.innerHTML);"><p οnclick="alert(this.innerHTML);">aaaa</p></td>

            <td>bbb</td>

        </tr>

    </table>