Как обратиться к ID элемента через функцию-шаблон по 'onclick' на другом элементе?

В данном примере есть два дива, стоящих рядом. Как по клику на одном диве поменять свойства второго? Явным образом указывать ID нельзя, т.к. таких объектов много. Я подумал, что как бы легче указывать ID в атрибуте "onclick" - в условиях функции, чем копировать эту функцию много раз или писать массив.

function funcOne(x) {
  document.getElementById(`"${x}"`).style.background = "red";
}
.main {
  padding: 10px;
  background: #FFF;
  cursor: pointer;
}
.part {
  text-align: center;
  width: 50px;
  height: 20px;
  margin-bottom: 5px;
  background: #ccc;
}
<div class="main">
  <div id="part-1" class="part">1</div>
  <div id="part-2" class="part" onclick="funcOne(part-1)">2</div>
</div>


Ответы (1 шт):

Автор решения: puffleeck

Я подумал, что как бы легче указывать ID в атрибуте "onclick" - в условиях функции

там есть this

<input id='a'
onfocus='console.log(this.id + " in focus")'
onblur='console.log(this.id + " blured")'
>

<input id='b'
onfocus='console.log(this.id + " in focus")'
onblur='console.log(this.id + " blured")'
>

<input id='c'
onfocus='console.log(this.id + " in focus")'
onblur='console.log(this.id + " blured")'

в нём есть ссылка на родительский объект, а оттуда уже и на всех "своих" ровесников можно глянуть. this.parentElement.childNodes как то так...

Я хочу, чтоб когда щелкнули по текстэреа, включился чекед на чекбоксе.

чтоб сама функция брала ID из onclick как-то, потому что не всегда они рядом стоят

<input type='checkbox' id='w'>
<label for='w'>
<textarea>
как на счет этого?
</textarea>
</label><br>

<input type='checkbox' id='x'>
<label for='x' contenteditable='true'>
или этого?
</label><br>

<div>ладно, ладно... я серьёзен)</div>
<q>Явным образом указывать ID нельзя, т.к. таких объектов много.</q>
<form>
хм...
<input type='checkbox' id='y' value='0'><br>
<textarea onclick='this.parentElement.children[0].checked="true";'>
оно ведь?)
</textarea>
</form>

<form>
<input type='checkbox' id='z' value='0'><br>
<textarea onfocus='this.parentElement.children[0].checked=true;'
onblur='this.parentElement.children[0].checked=false;'>
я даже немного наванговать могу до такого варианта...
</textarea>
</form>

но это ведь все равно не то чего хотелось, верно? дык может все таки сформулируете задачу по полнее? :3


UPD 4.01.2024 / 18:29

чтоб в textarea был текст пользователя ... А как только он удаляет текст - чекед пропадал бы

<form>
<input type='checkbox'>
<textarea
  oninput='this.parentElement.children[0].checked = (this.value!="" ? true : false)'>
</textarea>
</form>

→ Ссылка