Атрибут onclick с JavaScript работает, но не при вызове эквивалентной функции - PullRequest
1 голос
/ 16 февраля 2011

Это работает с атрибутом onclick:

<button type="button" onclick="this.style.color='red';">Astringents</button>

Это работает в атрибуте onclick, но не при вызове из элемента head:

<head>
    <script type="text/javascript">
    function red() {
        this.style.color='red';
    }
    </script>
</head>

<button type="button" onclick="red();">Astringents</button>

EDIT: Я хочу использовать одну функцию для обслуживания нескольких кнопок.Например:

<button type="button" onclick="red();">Astringents</button>
<button type="button" onclick="red();">Exfoliators</button>
<button type="button" onclick="red();">Moisturizers</button>
<button type="button" onclick="red();">Masques</button/>

1 Ответ

4 голосов
/ 16 февраля 2011

В этом сценарии this не ссылается на элемент <button> - и поэтому не может редактировать свойство элемента.

Ознакомьтесь со статьей quirksmode на эту тему http://www.quirksmode.org/js/this.html

На основании примера внизу статьи должно работать следующее:

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

function red(obj) {
    obj.style.color='red';
}
</script>
</head>

<button type="button" onclick="red(this)">Astringents</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...