我做了一个小提琴:
我正试图让代码达到一定程度,它永远不会同时显示相同的两个项目,或者当单击一个项目时,它永远不会从数组中拉回相同的项目,只是似乎在努力逻辑很少,而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'
];
答案 0 :(得分:2)
您似乎正在将非数字属性添加到数组中。
indexOf()
方法旨在处理并返回数字属性。
...此外
processAnswer
处理程序将元素的ID传递给addHtml
...就像“第一个”,“第二个”
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
];