1

私はjavascriptを初めて使用します。

ユーザーがプルダウンメニューから「はい」を選択すると、div領域に3つのテキストボックスが作成されるように変更した関数があります。

これが私のフォームプルダウンコードです:

    <select name="dosage" id="dosage" onchange="function dosage(sel)">
            <option value="No">No</option>
            <option value="Yes">Yes</option> 

    </select>
<div id="dosagearea"></div>

これは私が変更したJavaScriptで、ユーザーが何かを選択したときにメッセージボックスを最初に作成しました。

    function dosage(sel)
{
   if(sel.options.selectedIndex == 0)
   {

      return false;
   }


    else if(sel.options.selectedIndex == 'Yes')
       {
          x=document.createElement('input');
                    x.setAttribute('rows',1);
                    x.setAttribute('cols',20);
                    x.name='dosage_emitted';
                    document.getElementById('dosagearea').appendChild(x);

            x=document.createElement('input');
                    x.setAttribute('rows',1);
                    x.setAttribute('cols',20);
                    x.name='dosage_absorbed';
                    document.getElementById('dosagearea').appendChild(x)


            x=document.createElement('input');
                    x.setAttribute('rows',1);
                    x.setAttribute('cols',20);
                    x.name='dosage_period';
                    document.getElementById('dosagearea').appendChild(x)
       }
    } 

私はfirebugをチェックしましたが、JSエラーは返されませんでした。私の関数は、正しい方法で呼び出されていないと思います。

ありがとう

4

3 に答える 3

0

次のことを試してください。onchange="dosage(this)"

于 2011-07-13T19:39:15.520 に答える
0

onchangeプロパティの値は、基本的に関数またはJavaScriptの名前です。select要素をパラメーターとして関数を呼び出す場合は、次のことを行う必要があります。

<select name="dosage" id="dosage" onchange="dosage(this)">

HTMLとJSを結合するため、これは推奨される方法ではないことに注意してください。代わりに、JSに直接イベントを追加してみてください。

window.onload = function() {
    document.getElementById("dosage").onchange = dosage;
    function dosasage(event) {
        var sel = event.currentTarget;
    }
}
于 2011-07-13T19:43:48.100 に答える
0

入力またはプレースホルダーのいずれかにdisplay:noneを使用して、フィールドを既にhtmlに含めることをお勧めします。が選択されている場合は、display:blockに切り替えますyes。また、イベントリスナーをonchange = "dosage(this)"に変更する必要があります

またはこのようにします

<select name="dosage" id="dosage" onchange="document.getElementById('dosagearea').style.display = this.options.selectedIndex ? 'block' : 'none'">
   <option value="No">No</option>
   <option value="Yes">Yes</option> 
</select>
<div id="dosagearea" style="display:none">
    <input type="text" name="dosage_emitted" />
    <input type="text" name="dosage_absorbed" />
    <input type="text" name="dosage_period" />
</div>

ここで動作中ですhttp://jsfiddle.net/t4cy7/

于 2011-07-13T19:46:03.857 に答える