0

firebug でデバッグすると、次の JavaScript エラーが発生します。

'cities' is not a function. 

私が達成しようとしているのは動的オプションであり、以前は機能していました。これは、復元する必要がある古い機能を壊した新しいバージョンのページです。HTML から呼び出されます。

<select name="w" onchange="cities(this);" id="searcharea_expanded" class="">

そして、同じファイルで javascript として宣言されています。

<script>
function cities(obj){

    if(obj.value == '3'){

         //undisplay cities options municipality_control2

        document.getElementById('municipality_control').style.display='none'

    }else{

        $('#cities').load('/cities?regionId='+obj.value);
    }
}  
}
</script>

では、なぜこのエラーが発生するのでしょうか? また、スクリプトが更新する div である都市という名前の div もあり、これは以前は機能していました。

<div id="cities" class="selectbox munics ">
     <select id="municipality_control" name="m">
         <option value="4691207">Madgaon</option>
         <option value="4695203">Mormugao</option>
         <option value="4692204">Panaji</option>
         <option value="4676203">Other city</option>
    </select>
</div>
4

3 に答える 3

1

それがあなたのサイトからの直接のコピー アンド ペーストであると仮定すると、問題は簡単です}。スクリプトの最後に余分な閉じ中かっこがあります。これは、スクリプト ブロック全体を無効にする構文エラーです。つまり、関数は決して定義されません。

コードを適切にインデントすると、この種のことにもっと簡単に気付くでしょう。さらに、適切なエディターまたは IDE を使用してコードを作成することをお勧めします。これにより、構文が強調表示されます。たとえば、コードを Netbeans で開くと、関連する行にすぐにエラー マーカーが表示されるため、問題を非常に簡単に確認できます。

于 2013-06-16T08:48:00.207 に答える
0

私が見ることができる少なくとも3つの可能性があります:

  • あなたの関数は、それを定義するスクリプトが解釈される前にcities()呼び出されます(おそらくあなたchangeのためです)。が HTML の前に開閉するselectことを確認します。場合によっては、リスナーをインライン化するのではなく、jQuery を介して<script>追加します。onchange

  • Javascript にエラーがあり、cities宣言がまったく実行されません。エラー コンソール、Javascript コンソール、またはブラウザが提供するものを調べて、Javascript エラーをインターセプトします。

  • あなたのcitiesオブジェクトは、何らかの形で別のオブジェクトによって上書きされますcities(おそらくcities div? への jQuery ハンドルを保持しています)。

自身の間違いに基づいて、可能性の降順で可能性を並べました。

于 2013-06-16T08:00:37.483 に答える