Javascript Как передать это ключевое слово в функцию? - PullRequest
0 голосов
/ 16 апреля 2020

Привет всем, я хотел бы изменить свойство из кнопки easy right jajaja

document.getElementById("button_1").style.visibility = "collapse";

Но здесь у меня есть идентификатор объекта, который я хотел бы изменить, но если я не знаю конкретно id, потому что объект взят из al oop, я должен использовать "this", ключевое слово JavaScript, верно? например "this.id", чтобы войти в id объекта, который он вызывает, например

<input type='button' id='button_1' onclick='alert(this.id)' >Click Me!</button>

Это покажет идентификатор из этого элемента

Когда я вызываю Функция

<script>
function Funtion_Alert() {

    alert (this.id);

}
</script>

<input type='button' id='button_1' onclick='Funtion_Alert(this)' >Click Me!</button>

Я получаю предупреждение, не определенное. Мне нужно получить идентификатор от элемента, который вызывает функцию

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Вы также начинаете тег input, а затем закрываете button.

Более идиоматический c способ достижения того, что вы ищете, - addEventListener к элементу:

let button = document.getElementById("button_1");
button.addEventListener("click", (e) => alert(e.target.id));
<button id="button_1">Click Me!</button>
0 голосов
/ 16 апреля 2020

Это не так, как вы проходите this. this особенный, это контекст вашего текущего вызова функции.

Либо передайте его в качестве аргумента, но затем вы должны вызвать его как-нибудь еще внутри функции, как здесь:

<script>
function Funtion_Alert(element) { // <<< note the argument!

    alert(element.id); // <<< note the different name!

}
</script>

<input type='button' id='button_1' onclick='Funtion_Alert(this)' >Click Me!</button>

... или передать его как фактический this, используя Function.prototype.call:

<script>
function Funtion_Alert() {

    alert(this.id);

}
</script>

<input type='button' id='button_1' onclick='Funtion_Alert.call(this)' >Click Me!</button>
<!-- note the .call -->

В противном случае, this внутри функции будет window , как объяснено здесь , поэтому this.id будет по существу window.id, что не то, что вы хотите.

...