partyzanx
@partyzanx

Как сделать при нечётном клике один звук, а при чётном другой?

<td class="i" onclick="var mp3 = new Audio('/Ozvuchka/Grammatika/HSK1/bazovyj_porjado/nipao.mp3');mp3.play();"> 跑 。</td>


Как сделать при каждом нечётном клике один звук, а при чётном другой? Интересует ява именно внутри html
  • Вопрос задан
  • 526 просмотров
Решения вопроса 1
@sta-ger
Game Developer
Если я правильно понял про
ява именно внутри html
то так:

<td onclick="
if (!window.i) window.i = 0
if (window.i % 2) {
// звук при нечетном
} else {
// звук при четном
}
window.i++;
">text</td>
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
alvvi
@alvvi
export default apathy;
<td data-counter="0"></td>

var n = this.getAttribute('data-counter'); 
n % 2 === 0 ? new Audio('whatever.mp3').play() : new Audio('smhelse.mp3').play(); 
n++;
this.setAttribute('data-counter', n);
Ответ написан
evgeniy8705
@evgeniy8705
Повелитель вселенной
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно, как и просит ТС, прямо в HTML. При первом клике инициализировать массив из двух аудио, и переназначить функцию onclick:

this.a=[
  new Audio('https://wav-library.net/sfx/mix/LightSwitch.mp3'),
  new Audio('https://wav-library.net/prmusic/rock/Run.mp3')
];
this.f=()=>{ // это будет новый обработчик клика
  var cc=!!this.cc; // для краткости записи
  this.a[+!cc].pause(), // если предыдущий длинный играет - стоп его!
  this.a[+!cc].currentTime=0, // ..и перемотать на начало.
  a[+cc].play(), // играть новый
  this.cc=!cc // переназначить счётчик ( true | false )
};
this.onclick=this.f, // переназначить хэндлер клика
this.f() // вызвать для первого клика принудительно

CodePen

HTML с этим скриптом будет такой:
<td onclick="this.a=[ new Audio('https://wav-library.net/sfx/mix/LightSwitch.mp3'), new Audio('https://wav-library.net/prmusic/rock/Run.mp3')];
this.f=()=>{var cc=!!this.cc;this.a[+!cc].pause(),this.a[+!cc].currentTime=0,a[+cc].play(),this.cc=!cc};
this.onclick=this.f,this.f()">click me!</td>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы