0

私は現在、ウェブサイトの開発の真っ最中です。ユーザーがボタンを押した場合、javascript 関数を呼び出す必要があります。この関数を次のように簡略化しました。

<html>
<head>
<script type="text/javascript">
function newProd(number,customer,software,hardware,name)
{
       //I simplified this function
       alert('number is: '+number+'customer is: '+customer+' software is: '+software+' hardware is: '+hardware+' name is: '+name);
}
</script>
</head>

<body>
     <input type="text" name="textfieldCustomer"><br>
     <input type="text" name="textfieldSoftware"><br>
     <input type="text" name="textfieldHardware"><br>
     <input type="text" name="textfieldDescription"><br>
     <input type="button" name="button" value="go to function" onClick="newProd('a number',textfieldCustomer.value,textfieldSoftware.value,textfieldHardware.value,textfieldDescription.value)">
</body>

ユーザーが Internet Explorer でボタンを押すと、機能は完全に機能します。残念ながら、この機能は Chrome や Safari では機能しません。

何がうまくいかないのか誰にもわかりませんか?

4

2 に答える 2

3

フォーム フィールドはグローバル変数として定義されるべきではありません。IE ではそうかもしれませんが、それは信頼できる動作ではありません。これを試して:

onClick="newProd('a number',
    this.form.textfieldCustomer.value,
    this.form.textfieldSoftware.value,
    this.form.textfieldHardware.value,
    this.form.textfieldDescription.value)">

もちろん、入力をラップするフォームを追加します。

デモ: http://jsfiddle.net/kdUMc/

于 2012-07-08T11:47:38.020 に答える
0

私の目には、あなたのコードには 2 つの大きな間違いがあります。まず、入力フィールドへのアクセスが間違っています。「ドキュメント」などのインスタンス変数への接続が必要です。2 つ目は、form タグがありません。入力フィールドを form タグにラップすると、Esailja が投稿した値にアクセスできます。

于 2012-07-08T11:53:40.880 に答える