-1

フィールドのデータ<select name="hr">が保存されないのはなぜですか? ローカル ストレージ スクリプトのみを使用して新しいページを作成する<select name="hr">と、完全に機能しますが、このコードを埋め込むと、フィールドが保存されません。

<head>
<script>
document.getElementById("hr").onchange = function() {
    localStorage['hr'] = document.getElementById("hr").value;
}
window.onload= function(){
    if(localStorage['hr'])
        document.getElementById("hr").value = localStorage['hr'];
}
</script>
<script>
var musicsrc = 'alarmtone.mp3'
function sivamtime() {
    now=new Date();
    hour=now.getHours();
    min=now.getMinutes();
    sec=now.getSeconds();

if (min<=9) {
    min="0"+min;
 }
if (sec<=9) {
    sec="0"+sec;
 }
if (hour>12) {
    hour=hour-12;
    add="pm";
 }
else {
    hour=hour;
    add="am";
 }
if (hour==12) {
    add="pm";
 }
if (hour==00) {
    hour="12";
 }

  document.hours.clock.value = (hour<=9) ? "0"+hour : hour;
  document.minutes.clock.value = min;
  document.seconds.clock.value = sec;
  document.ampm.clock.value= add;
 setTimeout("sivamtime()", 1000);

}

playit=false
function playmusic(){
musicwin=window.open("","","width=100,height=100")
musicwin.document.write('<embed src=\"'+musicsrc+'\" hidden="true" border="0" width="20" height="20" autostart="true" loop="true">')
musicwin.document.close()
}

function soundcheck(cbox){
playit=cbox.checked
}

function alarm() {

    hrs = document.arlm.hr.value;
    min = document.arlm.mts.value;
    apm = document.arlm.am_pm.value;

 if ((document.hours.clock.value == hrs) &&
    (document.minutes.clock.value == min) &&
    (document.ampm.clock.value == apm)) {
     if (playit)
     playmusic()
     return false}

setTimeout("alarm()", 1000);}

</script>
</head>
<body onLoad="sivamtime()">
<table border="0" align="center" bgcolor="#c0c0c0" cellspacing="0" cellpadding="2" width="136">
    <tr>
        <td colspan="4">
            <font size="1" face="verdana, arial, helvetica, ms sans serif">
                <b>Current Time</b>
            </font>
        </td>
    </tr>
    <tr>
        <td>
            <form name="hours">
                <p><input type="text" size="2" name="clock"></p>
            </form>
        </td>
        <td>
            <form name="minutes">
                <p><input type="text" size="2" name="clock" /></p>
            </form>
        </td>
        <td>
            <form name="seconds">
                <p><input type="text" size="2" name="clock" /></p>
            </form>
        </td>
        <td>
            <form name="ampm">
                <p><input type="text" size="2" name="clock" /></p>
            </form>
        </td>
    </tr>
</table>

<table border="0" align="center" bgcolor="#c0c0c0" cellspacing="0" cellpadding="2" width="136">
    <tr>
        <td colspan="3">
            <form name="arlm">
                <font size="1" face="verdana, arial, helvetica, ms sans serif">
                    <b>Alarm Time</b>
                </font>
        </td>

    </tr>  
    <tr align="center">
        <td>
            <font size="1" face="verdana, arial, helvetica, ms sans serif">
                Hour 
            </font>
        </td>

        <td>
            <font size="1" face="verdana, arial, helvetica, ms sans serif">
                Minute
            </font>
        </td>

        <td>
            <font size="1" face="verdana, arial, helvetica, ms sans serif">
                am/pm
            </font>
        </td>
    </tr>

    <tr align="center">
        <td>
            <select id="hr" name="hr" onFocus="select()">
                <option value="01">01</option>
                ...
                <option value="12">12</option>
            </select>
        </td>

        <td>
            <select name="mts" onFocus="select()">
                <option value="00">00</option>
                ...
                <option value="59">59</option>
            </select>
        </td>

        <td>
            <select name="am_pm" onFocus="select()">
                <option value="am">AM</option>
                <option value="pm">PM</option>
            </select>
        </td>
    </tr>

    <tr align="left">
        <td colspan="3">
            <input type="checkbox" name="C1" value="ON" onClick="soundcheck(this)">
                <font size="1" face="verdana, arial, helvetica, ms sans serif">Use music alert?</font>
        </td>
    </tr>

    <tr>
        <td align="center" colspan="3">
            <input type="button" size="2" value="Set Alarm" onClick="alarm()" />
        </td>
    </tr>

    <tr>
        <td align="center" colspan="3">
            <input type="button" size="2" value="Reset" onClick="reset()" />
        </td>
    </tr>

</table>
</form>
</body>
4

2 に答える 2

0

onchange ハンドラーが追加された時点で DOM の準備が整っていないことに加えて、localStorage の使用法が間違っているようです。

それ以外の:

localStorage['hr'] = document.getElementById("hr").value;

次のようにする必要があります。

localStorage.setItem('hr', document.getElementById("hr").value);

それ以外の:

if(localStorage['hr'])

次のようにする必要があります。

if(localStorage.getItem('hr'))

等々...

ここで詳細を確認できます: https://developer.mozilla.org/en-US/docs/DOM/Storage#Storage

于 2013-03-01T23:02:54.920 に答える