-1

私はフィドルを作りました:

http://jsfiddle.net/csS24/

私はコードをある程度まで理解しようとしています。同じ2つのアイテムが同時に表示されることはなく、1つのアイテムがクリックされたときに、同じアイテムが配列から引き戻されることはなく、少し苦労しているようです。ロジックとindexOfメソッドがおかしな動作をしています。

var justAdded = [];
justAdded['first'] = 0;
justAdded['second'] = 1;

newHtml = returnRandom().split('|');

justAdded[e.id] = parseInt(newHtml[0], 10);

    if(justAdded.indexOf(parseInt(newHtml[0], 10)) == -1){
        e.style.opacity = 0;
        e.innerHTML = newHtml[1];
        e.style.opacity = 1;
        e.setAttribute('data-id', newHtml[0]);
    } else {
        uniq(clickedEl);
    }

var returnRandom = function(){
    return options[Math.floor(Math.random() * options.length)]
};

e.idは「first」または「second」と等しくなります。returnRandom()は、options配列からランダムな値を取得します。

var options = [
    '0|Flash',
    '1|Internet Explorer',
    '2|Java',
    '3|!important'
];
4

1 に答える 1

2

配列に数値以外のプロパティを追加しているようです。

このindexOf()メソッドは、数値プロパティを処理して返すことを目的としています。

さらに...

  • ハンドラーはprocessAnswer要素のIDをaddHtml...「first」、「second」のように渡します

  • addHtmlそのID文字列を使用して、同じ名前の変数に格納されているまったく同じ要素を取得し、その要素をに渡します。uniq

  • uniq配列にプロパティを追加しますjustAdded。キーは要素のIDです。

渡す要素とそのIDを切り替え続け、次のすべての関数で一方を使用してもう一方を取得します。つまり、コードはひどくまとまりがないように見えます。最初から始めて、コードを再考するだけでよいと思います。


また、これは一体何ですか?...

var options = [
    '0|Flash',
    '1|Internet Explorer',
    '2|Java',
    '3|!important'
];

配列内の文字列にインデックスをハードコーディングするのはなぜですか?配列は順序付きリストです。彼らはすでにインデックスを処理しています。

var options = [
    'Flash',                // 0
    'Internet Explorer',    // 1
    'Java',                 // 2
    '!important'            // 3
];
于 2012-05-25T23:42:22.877 に答える