2

私はサイトの長年の訪問者ですが、初めてのポスターです。

私は JavaScript を初めて使用し、選択したパラメーターに基づいてフォームを動的に更新するスクリプトを作成するために最善を尽くしました。ユーザーが (この場合) 部品番号を選択すると、[更新] ボタンをクリックして、それに応じて他の 7 つのフィールドを変更できます。間違いがあった場合に備えて、部品番号フィールドをリセットするリセット ボタンを作成しました (ここで壊れています)。[更新] ボタンをもう一度クリックすると、他の 7 つのフィールドもリセットされるはずです。それが理にかなっていることを願っています。部品番号のリストの途中で機能を試してみたところ、うまく機能しましたが、途中で壊れました。現在、本来の方法でリセットする唯一の部分は「oempma.value」です。

ともあれ、長文失礼しました、続きます。フォーム(new.php)のコードは次のとおりです。

関数が呼び出される dynamicupdate.js ファイルは次のとおりです。

function dynamicupdate(form, prefix, part_number, flight_control, lat_position, long_position, vert_position, location, material, oempma) 
    {
        if(form)
            {
                if(part_number.value === "C6CF1124-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "Left";
                    long_position.value = "Fwd";
                    vert_position.value = "N/A";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                }

                if(part_number.value === "C6CW1031-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "";
                    long_position.value = "N/A";
                    vert_position.value = "";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                    }
                        if (part_number.value === "C6CW1031-1" && lat_position.value === "" && vert_position.value === "")
                        {
                        alert ("You must manually enter the \"Lat Position\" and \"Vert Position\" for this cable.");
                        }


            }

        else 
            {
            flight_control.value = "";
            lat_position.value = "";
            long_position.value = "";
            vert_position.value = "";
            location.value = "";
            material.value = "";
            }


        if(prefix.value === "PDM" || prefix.value === "TB" || prefix.value === "JNL")
            {
            oempma.value = "PMA";
            }
        else if(part_number.value === "")
            {
            oempma.value = "";
            }
        else
            {
            oempma.value = "OEM";
            }

        return;
    }

この関数は dynamicupdate.js ファイルにもありますが、何らかの理由で上記のコード ブロックにとどまることができませんでした。

function resetsome(form, prefix, part_number)
    {
    part_number.value = "";
    prefix.value = "";
    }

さらに何かを台無しにした場合に備えて、.js ファイルのいくつかの大きなブロックを元の場所に戻すなど、いくつかの方法でトラブルシューティングを試みましたが、修正されませんでした。また、この状況に適用される JavaScript 言語についても多くのことを読みましたが、何か間違っていることがわかりました。

4

2 に答える 2

0

問題はこれだと思います:

if(form){/*...*/}

form が true の場合、フィールドをリセットするコードは実行されません。

これを試して:

 function dynamicupdate(form, prefix, part_number, flight_control, lat_position, long_position, vert_position, location, material, oempma) 
    {
      if(!form)return;


        if(part_number.value !== ""){
                if(part_number.value === "C6CF1124-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "Left";
                    long_position.value = "Fwd";
                    vert_position.value = "N/A";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                }

                if(part_number.value === "C6CW1031-1")
                    {
                    flight_control.value = "Aileron";
                    lat_position.value = "";
                    long_position.value = "N/A";
                    vert_position.value = "";
                    location.value = "Wing";
                    material.value = "Carbon Steel";                    
                    }
                        if (part_number.value === "C6CW1031-1" && lat_position.value === "" && vert_position.value === "")
                        {
                        alert ("You must manually enter the \"Lat Position\" and \"Vert Position\" for this cable.");
                        }


            }

        else {//when part_number.value is empty reset the fields
            flight_control.value = "";
            lat_position.value = "";
            long_position.value = "";
            vert_position.value = "";
            location.value = "";
            material.value = "";
            }


        if(prefix.value === "PDM" || prefix.value === "TB" || prefix.value === "JNL")
            {
            oempma.value = "PMA";
            }
        else if(part_number.value === "")
            {
            oempma.value = "";
            }
        else
            {
            oempma.value = "OEM";
            }

        return;
    }
于 2012-10-08T12:18:39.020 に答える
0

コードには多くの問題がありますが、コードの長さや構造については考えていません。

まず第一に、いくつかのパラメーターが必要ない場合は、関数でそれらを定義しないでください。それらを定義する場合はそれらを使用する必要があります。resetsome関数のフォームパラメーターは使用されていないため、削除または使用する必要があります。

次に、 の値thisは現在のオブジェクト (関数) です。たとえば、これを試してください。

this.foo = 'bar';
function that()
{
    this.foo = 'loremipsum';
}
that();
alert(this.foo);

そして、あなたは私が何を意味するかを理解するでしょう.

this のメンバーを使用する代わりに、変数を作成してそこに値を保存する必要があります。そうすれば、コードが機能するはずです。

于 2012-10-08T12:03:14.270 に答える