1

過去数日間、私は自分のWebサイトの連絡フォームを作成してきました。このフォームには、専門家であり、display:none / blockおよびdisabled:true/falseの領域が含まれている可能性があります。そして、私はそれを作りました。しかし、1時間前に、Chromeは「onclick」機能をサポートしていないと知らされたので、今度はこのすべての「onlick」を「onchange」に変更する必要があります。

ONCLICKは正常に機能します。

<script language="javascript">
    function enableField() { some function here }
    function disableField() { some function here }
</script>

<select class="list" id="topic">
    <option onclick="javascript:disableField()" selected="selected">Select Your topic</option>
    <option onclick="javascript:enableField()">Topic 1</option>
    <option onclick="javascript:enableField()">Topic 2</option>
    <option onclick="javascript:disableField()">Topic 3</option>
    <option onclick="javascript:disableField()">Topic 4</option>
</select>

ONCHANGEは行いません:

<script language="javascript">
    function enableField() { some function here }
    function disableField() { some function here }
</script>

<select class="list" id="topic" onchange="javascript:this.value()">
    <option value="disableField" selected="selected">Select Your topic</option>
    <option value="enableField">Topic 1</option>
    <option value="enableField">Topic 3</option>
    <option value="disableField">Topic 3</option>
    <option value="disableField">Topic 4</option>
</select>

「javascript:X()」に「X」として「value」を挿入したかったので、この関数は「ONLICK」オプションで発生したのと同じように機能します。

私はさまざまな方法でmaaaanyを試してきましたが、どれも機能しません。

助けてください。よろしく、マイク

4

2 に答える 2

1

それを行う1つの方法

<select class="list" id="topic" onchange="window[this.value]()">
    <option value="disableField" selected="selected">Select Your topic</option>
    <option value="enableField">Topic 1</option>
    <option value="enableField">Topic 3</option>
    <option value="disableField">Topic 3</option>
    <option value="disableField">Topic 4</option>
</select>

しかし、私はこのようにします

<script language="javascript">
    function enableField() { some function here }
    function disableField() { some function here }
    function handle(value){
       if (value === 'enableField'){
           enableField();
       } else {
           disableField();
       }
    }
</script>

<select class="list" id="topic" onchange="handle(this.value)">
    <option value="disableField" selected="selected">Select Your topic</option>
    <option value="enableField">Topic 1</option>
    <option value="enableField">Topic 3</option>
    <option value="disableField">Topic 3</option>
    <option value="disableField">Topic 4</option>
</select>

注:onclickなどのイベント属性については、暗黙的であるonchangeと言う必要はありませんjavascript:.....

于 2012-12-29T13:59:17.447 に答える
0
this.value()

文字列です。文字列を呼び出すことはできません。あなたが望むのは、グローバルスコープで関数を見つけることです:

window[this.value]()

また、関数を専用のオブジェクトに格納することをお勧めします。

funcs = {
  disableField: function(){...},
  enableField: function(){...},
}

...

funcs[this.value]()
于 2012-12-29T13:59:37.057 に答える