2017-06-20 83 views
0

所以我試圖用簡單的HTML和JavaScript構建一個時鐘,但我已經停下來了。我有時鐘,可以選擇鬧鐘的時間,但聲音永遠不會消失。JavaScript鬧鐘不會播放聲音

function alarmOn() { 
    if (alarmTime = startTime()) { 
    var audio = new Audio('school-bell.mp3'); 
    audio.play(); 

https://webpage-jbedford23.c9users.io/NewClock.html

如果您需要訪問完整的代碼。我知道這是行不通的。

+0

您確定'school-bell.mp3'與您正在運行代碼的頁面位於相同的文件夾中嗎? –

+1

'if(alarmTime = startTime())'?這是你如何做比較? –

+0

是的,它是在同一個文件夾中,我試圖「==」以及它沒有工作 – Jordan

回答

0

var today= new Date(); 
 
var alarmTime = "nothing"; 
 
var toCompare = "nothing"; 
 
function startTime() { 
 
    var today = new Date(); 
 
    var h = today.getHours(); 
 
    var m = today.getMinutes(); 
 
    var s = today.getSeconds(); 
 
    m = checkTime(m); 
 
    s = checkTime(s); 
 
    document.getElementById('txt').innerHTML = 
 
    h + ":" + m + ":" + s; 
 
    toCompare = h + ":" + m; 
 
    if (String(alarmTime) === String(toCompare)) { 
 
     //new Audio('./school-bell.mp3').play() 
 
     var audio = new Audio('school-bell.mp3'); 
 
     audio.play(); 
 
     console.log("Comparison passed"); 
 

 
    } 
 
    var t = setTimeout(startTime, 1000); 
 
} 
 
function checkTime(i) { 
 
    if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10 
 
    return i; 
 
} 
 

 
// curTime = (checkTime(today.getHours()) + ":" + checkTime(today.getMinutes())); 
 
// var fresh = setTimeout(curTime, 1000); 
 

 
function alarmSet() { 
 
    hourNum = document.getElementById("hour"); 
 
    hValue = hourNum.options[hourNum.selectedIndex].value; 
 
    minNum = document.getElementById("mins"); 
 
    mValue = minNum.options[minNum.selectedIndex].value; 
 
    alarmTime = hValue + ":" + mValue; 
 
    
 
} 
 
function alarmOn() { 
 
\t console.log("alarmTime = " + alarmTime + " | " + "toCompare = " + toCompare); 
 
    if (String(alarmTime) === String(toCompare)) { 
 
    //new Audio('./school-bell.mp3').play() 
 
    var audio = new Audio('school-bell.mp3'); 
 
    audio.play(); 
 
    console.log("Comparison passed"); 
 
    
 
    } 
 
} 
 
function alarmOff() { 
 
    document.all.sound.src = ""; 
 
    alarmTime=""; 
 
}
#txt { 
 
    height: 100px; 
 
    width: 800px; 
 
    margin: auto; 
 
    position: absolute; 
 
    top: 0; left: 0; bottom: 0; right: 0; 
 
    padding-top: 70px; 
 
    font-family: courier, monospace; 
 
    text-align: center; 
 
    color: white; 
 
    font-size: 100px;
<body onload="startTime()" style="background-color: black" > 
 

 
<div id="txt"style="color:#00ff00" align=center ></div> 
 
\t <table width=50% border=1 style="color:white"> 
 
<tr> 
 
<td align=middle style="color:white"> 
 
<input type=radio name=alarmOnOff onClick="alarmOn()">On 
 
<input type=radio name=alarmOnOff onClick="alarmOff()" checked>Off 
 
<td align=middle> 
 
Set Alarm: 
 
<br> 
 
<select id=hour name=hourOpt onChange="alarmSet()" size=1> //Opti 
 
<option value="00">00<option value="01">01<option value="02">02<option value="03">03 
 
<option value="04">04<option value="05">05<option value="06">06<option value="07">07 
 
<option value="08">08<option value="09">09<option value="10">10<option value="11">11 
 
<option selected value="12">12 
 
<option value="13">13<option value="14">14<option value="15">15<option value="16">16 
 
<option value="17">17<option value="18">18<option value="19">19<option value="20">20 
 
<option value="21">21<option value="22">22<option value="23">23 
 
</option> 
 
</select> 
 
<select id=mins name=minOpt onChange="alarmSet()" size=1> 
 
<option selected value="00">00<option value="01">01<option value="02">02<option value="03">03 
 
<option value="04">04<option value="05">05<option value="06">06<option value="07">07 
 
<option value="08">08<option value="09">09<option value="10">10<option value="11">11 
 
<option value="12">12<option value="13">13<option value="14">14<option value="15">15 
 
<option value="16">16<option value="17">17<option value="18">18<option value="19">19 
 
<option value="20">20<option value="21">21<option value="22">22<option value="23">23 
 
<option value="24">24<option value="25">25<option value="26">26<option value="27">27 
 
<option value="28">28<option value="29">29<option value="30">30<option value="31">31 
 
<option value="32">32<option value="33">33<option value="34">34<option value="35">35 
 
<option value="36">36<option value="37">37<option value="38">38<option value="39">39 
 
<option value="40">40<option value="41">41<option value="42">42<option value="43">43 
 
<option value="44">44<option value="45">45<option value="46">46<option value="47">47 
 
<option value="48">48<option value="49">49<option value="50">50<option value="51">51 
 
<option value="52">52<option value="53">53<option value="54">54<option value="55">55 
 
<option value="56">56<option value="57">57<option value="58">58<option value="59">59 
 
</option> 
 
</select> 
 
</form> 
 
</td> 
 
</tr> 
 
</table> 
 

 
<div id="txt"style="color:#00ff00" align=center ></div> 
 

 
</body>

我認爲錯誤可能與你比較alarmTime和statTime的方式。在Javascript中,相比運營商,像這樣:

=== 
== 
!== 
!= 

所以,如果你的時間是相同的格式,然後更改:

if (alarmTime = startTime()) { 

要:

if (alarmTime === startTime()) { 

或:

if (alarmTime == startTime()) { 

有關比較操作的詳細信息RS,請通過https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators?v=control

希望這有助於

編輯:

if (alarmTime = startTime()) 

的比較操作是錯誤的,因爲我上面提到的,最重要的是,你是一個功能比較變量不返回任何內容:

function startTime() { 
    var today = new Date(); 
    var h = today.getHours(); 
    var m = today.getMinutes(); 
    var s = today.getSeconds(); 
    m = checkTime(m); 
    s = checkTime(s); 
    document.getElementById('txt').innerHTML = 
    h + ":" + m + ":" + s; 
    var t = setTimeout(startTime, 1000); 
} 

您可以創建一個存儲字符串格式當前時間的變量,因爲你的alarmTime是通過這種方式創建:

alarmTime = hValue + ":" + mValue; 

這樣,您可以進行比較,這是有道理的。

+0

好吧,我改變了我的比較都在一起,現在看起來是這樣的.... VAR今天=新的日期() VAR H = today.getHours(); var m = today.getMinutes(); var s =今天。getSeconds();如果(鬧鐘時間== [h +「:」+ m +「:」+ s]) 我甚至把控制檯日誌中,看看他們是否產生相同的結果,他們只是但仍然不會播放聲音。 ..... – Jordan

+0

@Jordan檢查我的編輯,應該讓你知道你錯在哪裏,代碼有很多錯誤。全屏顯示,並在控制檯中查看結果。 –

-1

這是我會在android studio上做的。

嘗試MediaPlayer,它有很多選項。

MediaPlayer mediaPlayer = new MediaPlayer(); 
mediaPlayer.setDataSource(context, ringtone); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
mediaPlayer.setLooping(true); 
mediaPlayer.prepare(); 
mediaPlayer.start();