2015-06-12 5 views
2

У меня есть этот простой крошечный .mp3, который нужно воспроизводить на новом сообщении. Он играет хорошо, но я не могу швы контролировать уровень его громкости. У меня есть Jfidle http://jsfiddle.net/Ls9ef0zo/14/, подготовленный с помощью визуального аудиоэлемента. Конечно, я не хочу, чтобы это было видно в реальной среде.html5 audio Настройка громкости с javascript недействительна

<input id="volumeslider" type="range" min="0" max="1" step="0.1" value="0.5" 
    oninput="outputUpdate(value)"/>              


    var newmsgsound = document.createElement('audio'); 
    newmsgsound.setAttribute('src', 
    http://chat.transonly.nl/sounds/sound_1.mp3'); 
    newmsgsound.setAttribute('id', 'newmsgsound'); 
    newmsgsound.setAttribute('controls', 'controls'); 
    body.appendChild(newmsgsound); 

    function outputUpdate(vol) { 
    var audiolevel = document.getElementById('newmsgsound'); 
    audiolevel.volume=vol; 
    } 

редактировать Не знаете, где обновить вопрос частично ответил так я буду делать это здесь?

Благодаря наличию анверов, аудиоэлемент фактически отвечает теперь на слайдер-событие! .. В моей собственной среде (Not Fidle) Звук, воспроизводимый аудио-элементом, не зависит от него. Я вижу, что он отвечает. Даже когда я устанавливаю его на «Mute» на самом аудиоэлементе, звук становится громким. Разве это не должно быть?

edit2 * Мне должно быть очень стыдно сейчас !!! Я слышал звук браузера, который я скрывал, и отправлял тестовые сообщения этому. :-) Теперь все в порядке!

+1

Попробуйте добавить слушателя событий в том же месте, что и определение функции. – Soumya

+1

Если вы установили jsfiddle в «no wrap in body», он будет работать: http://jsfiddle.net/Ls9ef0zo/19/ – Kaiido

+0

Действительно, это сработало. Это типичная установка для Fidle? – ingridsede

ответ

0

Вы используете выходное обновление не используется.

попробуйте что-то вроде этого.

var newmsgsound = document.createElement('audio'); 
newmsgsound.setAttribute('src', 'http://chat.transonly.nl/sounds/sound_1.mp3'); 
newmsgsound.setAttribute('id', 'newmsgsound'); 
newmsgsound.setAttribute('controls', 'controls'); 
document.body.appendChild(newmsgsound); 
var audiolevel = document.getElementById('newmsgsound'); 
var value = document.getElementById('volumeslider').value; 
audiolevel.volume=value; 
+0

Да, это (inline html) + и как вы обновляете его до чего-то другого, кроме значения по умолчанию ввода ? – Kaiido

1

Обновление:

Ваш код хорошо. Вам нужно определить функцию outputUpdate(), прежде чем обращаться к нему в fileslider. Вам просто нужно настроить jsfiddle, чтобы «не обернуть тело».

<script> 
    var newmsgsound = document.createElement('audio'); 
    newmsgsound.setAttribute('src', 'http://chat.transonly.nl/sounds/sound_1.mp3'); 
    newmsgsound.setAttribute('id', 'newmsgsound'); 
    newmsgsound.setAttribute('controls', 'controls'); 
    document.body.appendChild(newmsgsound); 

    function outputUpdate(vol) {  
     var audiolevel = document.getElementById('newmsgsound'); 
     audiolevel.volume=vol; 
    } 
    </script> 

    <input id="volumeslider" type="range" min="0" max="1" step="0.1" oninput="outputUpdate(value)"/>  

Вот plunkr

+2

http://plnkr.co/edit/70mGs7TXwQacrl7TJhSg?p=preview – Kaiido

+1

Просто посмотрел ваш комментарий выше. По-видимому, jsfiddle показал «Uncaught ReferenceError: outputUpdate не определен» на консоли, но он отлично работал, когда я копировал код на plunkr. Спасибо за указание. Обновление ответа. – nalinc

+1

http://stackoverflow.com/questions/30797262/html5-audio-setting-volume-with-javascript-not-effective#comment-49644012 – Kaiido