1

理解できない何らかの理由で、次のコードは機能しません。

<!DOCTYPE html>
<html>
<head>
<title>Devit Ajax Test</title>
<script language="JavaScript" type="text/javascript" src="js/voucher.js"></script>
</head>
<body onLoad="document.VU.cellNo.focus()">
<form name="VU" id="VU" method="post" >
    <div class="FormItem">
        <label>Cell Number:</label>
        <input type="tel" id="cellNo" name="cellNo" required > 
    </div>
    <p>
    <div class="FormItem">
        <label>PIN:</label>
        <input id="pin" name="pin" type="text" required >
    </div>
    <div class="FormItem">
        <p> 
        <input type="submit" value="Submit" onclick="submit_click()"> 
        </p>  
    </div>
<center>
<div id="loadingNode"></div>
</center>
</body>
</html>
<script>
function submit_click()
{
    alert("progExe()");
    progExe("http://web.devit.co.za/PEMObi/Pages/HomePage/Homepage.aspx?CellNumber="+VU.cellNo.value"&PIN="+VU.pin.value);    
}
</script>

submit_click()呼び出しにもかかわらず、関数が呼び出されることはありませんonclick

4

3 に答える 3

4

この問題は、呼び出す行にありprogExe()ます。関数呼び出しで作成している文字列に、パーツ間のプラス記号がありません。

このプラス記号の欠落は構文エラーであり、無効な Javascript コードになります。これは、コード ブロック全体が無効になることを意味します。つまり、ブラウザはそれをまったく実行しません。

これを証明するために、行をコメントアウトできprogExe()ます。これにより構文エラーが取り除かれ、残りのコードが有効であると見なされるため、動作が開始されることがわかりますalert()

もちろん、エラーを修正すると問題も解決します。の後にプラス記号を追加しVU.cellNo.valueます。

一度見れば明らかですが、見落としがちな種類のバグであり、適切なエディターを使用してコードを記述することがなぜ良いかを示しています。優れた構文強調表示機能を備えたテキスト エディターまたは IDE でコードを開くと、問題の場所が正確に示されます。たとえば、Netbeans はエラー メッセージでその行にフラグを立てます。これらのことを見つけるのがはるかに簡単になります。

于 2013-05-27T20:34:49.437 に答える
0

+コードにa がありません:

変化する

progExe("http://web.devit.co.za/PEMObi/Pages/HomePage/Homepage.aspx?CellNumber="+VU.cellNo.value"&PIN="+VU.pin.value);  

progExe("http://web.devit.co.za/PEMObi/Pages/HomePage/Homepage.aspx?CellNumber="+VU.cellNo.value+"&PIN="+VU.pin.value);  
于 2013-05-27T20:12:59.263 に答える