2011-11-09 7 views
0

私は次の関数を使用していますが、うまくいきます。誰かが間違っている点を指摘できますか?Javascript関数vb変数をチェックする

vb変数は、データベースクエリから生成されます。本当にここ何が起こっている

window.onload function PostCodeChecker() { 
if (<%= sPostalCode %> !== 'SW') { 
alert("This is not an SW Postal Code"); 
} 
} 
+1

これは生成コードですか、作成したコードですか?生成されたコードはどのように見えますか?おそらく '<%= ... %>'の引用符が必要です。 –

+2

「うまくいく」場合、問題は何ですか? :D –

答えて

2

は、サーバー側のコードは、あなたが<%= sPostalCode %>を入れている値にスワップし、ブラウザに結果を送信しているということです。 sPostalCodeは、(例えば)「NW10」だったのであれば、あなたは、あなたはそれを引用符で囲む必要があります(そして、あなたが不足している=を追加する必要があります)

window.onload function PostCodeChecker() { 
if (NW10 !== 'SW') { 
// ^--- ERROR (unless you happen to have a client-side variable by that name, which I'm guessing you don't) 
alert("This is not an SW Postal Code"); 
} 
} 

を取得したい、このように:

//   v-- was missing 
window.onload = function PostCodeChecker() { 
if ('<%= sPostalCode %>' !== 'SW') { 
// ^--- here   ^--- and here 
alert("This is not an SW Postal Code"); 
} 
} 
...何ブラウザに行くことになるように:文字列がそれにどんな 'の文字を持っている、または結果となる他の文字(サーバーではないということを前提としてい

window.onload = function PostCodeChecker() { 
if ('NW10' !== 'SW') { 
alert("This is not an SW Postal Code"); 
} 
} 

JavaScriptの文字列リテラルが無効であるため、結果がブラウザに送信されます)。もちろん

、あなただけのこの操作を行うことができます:

<% If sPostalCode <> "SW" Then %> 
window.onload = function() { 
alert("This is not an SW Postal Code"); 
} 
<% End If %> 

を...それはサーバ側の変数だから、あなたはテストサーバー側を行うことができます。


サイドノート:この書式の式:

something = function name() { ... }; 

は...さまざまなブラウザ、最も顕著なのIEに問題があります。これは関数式という名前のと呼ばれ、関数の名前が(この場合はname)の関数式であるためです。 IE上ではという2つの完全に別個の関数が作成され、という結果になってしまいます。もっと:それはsPostalCodeの値が何であれの名前の変数を探しています引用符なしDouble-take

0

試してみてください。

window.onload = function PostCodeChecker() { 
    if ('<%= sPostalCode %>' !== 'SW') { 
     alert("This is not an SW Postal Code"); 
    } 
} 
2

間違っている最初のものがある:

window.onload function PostCodeChecker() { 

割り当て演算子がありません。IE IRRCでメモリリークが発生しています。

window.onload = function() { 

間違っている2つ目は次のとおりです。

おそらく

if (SW !== 'SW') { 

そしてSWのような出力に何かが未定義値であるだろう

if (<%= sPostalCode %> !== 'SW') { 

。ASPを引用符で囲み、出力するものがJSとHTMLであることを確認してください。

主なことは間違いですが、サーバー上で簡単にテストできるのは、クライアントでテストを行っていることです。

擬コード私はASPをしないので:

<% if (sPostalCode == "SW") { 
     print 'alert("This is not an SW Postal Code");'; 
    } 
%> 

(しかし完全にJSからそれを取って、ちょうどページにテキストとしてそれを置くことは普通であり、最も信頼性の高い、アプローチ)。

+0

それを全部持ち帰ることについての良い点。 –

0

2つの問題。

  1. あなたの構文が無効ですので、=を忘れました。

  2. 結果 JavaScriptがASPの処理後にどのように見えるかを検討する必要があります。それは価値があるので、もしsPostalCodeはあなたの条件は次のように終わるし、「SW」、置換されている:あなたは、その文字列の前後に引用符を持っていないので

    if (SW !== 'SW') 
    

    これは、有効なJavaScriptではありません。修正するには

window.onload = function PostCodeChecker() { // <---- equals 
    if ('<%= sPostalCode %>' !== 'SW') {   // <---- quotes in the JS 
     alert("This is not an SW Postal Code"); 
    } 
} 

を^私はまた、あなたのコードをより読みやすくするためにインデントを追加しました。私は常にこれを行うことをお勧めします。

sPostalCodeには、そのJavaScript構文を破る文字が含まれているとどうなるかを考慮する必要があります。例えば、'である。それに応じて、ASPの変数を準備するか "エスケープ"する必要があります。

関連する問題