-1

我做了一个小提琴:

http://jsfiddle.net/csS24/

我试图让代码达到一个点,它永远不会一次显示相同的两个项目,或者当一个项目被单击时,它永远不会从数组中拉回同一个项目,只是似乎有点挣扎逻辑和 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 将等于“第一”或“第二”。returnRandom() 将从选项数组中获取一个随机值:

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

1 回答 1

2

您似乎正在向数组添加非数字属性。

indexOf()方法旨在处理并返回数字属性。

此外...

  • 处理processAnswer程序将元素的 ID 传递给addHtml...如“first”、“second”

  • addHtml使用该 ID 字符串获取存储在同名变量中的相同元素,然后将该元素传递给uniq

  • uniqjustAdded数组添加一个属性,键是元素的 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 回答