1

私が指導している学生のために作成した次のコードがありますが、誰かがより簡単な方法や既存の方法を考えられるかどうか疑問に思っていますか? また、javascript でプラグインを作成する方法を学ぶことにも興味がありますが、Google でプラグインを見つける方法を忘れてしまいました。

とにかく、これがコードです...

window.addEventListener('load', function()
{
    for(var i = 0; i < document.forms[0].length; i++)
    {
        document.forms[0].elements[i].checked = false;
    }   
}, false);

function formHandler()
{
    valArray = new Array();
    toppArray = new Array();
    var theForm = document.forms[0];

    for(var i = 0; i < theForm.length; i++)
    {
        theValue = theForm.elements[i].value;
        if(theForm.elements[i].checked == true)
        {
            if(theForm.elements[i].type == 'checkbox' && theForm.elements[i].name == 'myChBx')
            {
                appendArr(toppArray, theForm.elements[i].value);
                appendArr(valArray, toppArray, 'topping');  
            }else
            {
                appendArr(valArray, theValue);  
            }
        }
    }
}

function appendArr(array, value, keyVal = '')
{
    if(keyVal != '')
    {
        array[keyVal] = value;
    }else
        array[array.length] = value;
}

さて、このコードが何をするかについて簡単に説明します。PHPでは、次のようなものを使用して配列に値を追加できることを知っています

$array[] = $value;

しかし、オブジェクトを使用してjavascriptで連想配列を作成する方法をいくつか読んだことがあります。ある意味で私はそれをやったと思いますが、配列オブジェクトを使用して管理しました。

これの目的は、このような単純なラジオとチェックボックスのフォームから値を取得することです...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="./appendArr.js"></script>
</head>

<body>
    <form action="" method="post">
        Radio 1:<input type="radio" name="myRdo" id="rdo" value="radio 1" onclick="formHandler();" />
        Radio 2:<input type="radio" name="myRdo" id="rdo" value="radio 2" onclick="formHandler();" />
        Radio 3:<input type="radio" name="myRdo" id="rdo" value="radio 3" onclick="formHandler();" />
        <br />
        Checkbox 1:<input type="checkbox" name="myChBx" id="myChBx" value="Checkbox 1" onclick="formHandler();" />
        Checkbox 2:<input type="checkbox" name="myChBx" id="myChbx" value="Checkbox 2" onclick="formHandler();" />
        Checkbox 3:<input type="checkbox" name="myChBx" id="myChbx" value="Checkbox 3" onclick="formHandler();" />
        <br />
        <input type="submit" name="submit" id="button" " value="Button" />
    </form>
</body>
</html>

それらを 1 つの配列に格納し、その配列の値の 1 つをトッピングと呼ばれる連想配列にします。そのため、配列内の一部の値は単一変数になり、他の値は単一変数のコレクションになります。

とにかく...私はこれに無駄に 1 時間費やしただけかもしれませんが、私は学ぶためにここに来ているので、荒らさないでください。ありがとう

4

1 に答える 1

1

JavaScript には連想配列がなく、インデックス付きリストである「配列」があり、key:value コンテナーである「オブジェクト」があります。これもまた、あなたが求めていることとはあまり関係がないように思われます。そのため、答えが必要な実際の質問は何ですか? 「JavaScript で $arr[] = $val を実行するにはどうすればよいですか?」その場合、次のように push() です。

["a","b","c"].push("d") // result: ["a","b","c","d"]

それがあなたの質問ではない場合は、元の投稿を編集してください。実際に知りたいことは完全に不明確です。

于 2013-03-08T22:51:50.943 に答える