2011-11-27 140 views
0

我对javascript很陌生,我一直在努力开发一些东西来帮助我教授关于二进制编码器和解码器的课程。这是我想出来的代码:未被捕获类型错误与jquery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#pressme').click(function(){ 

var randomnumber = Math.floor(Math.random() * 8); 
if(randomnumber == 0){ 
    $('#i_1').removeClass.addClass('wire_inactive'); 
    $('#i_2').removeClass.addClass('wire_inactive'); 
    $('#i_3').removeClass.addClass('wire_inactive'); 

    $('#o_0').removeClass.addClass('wire_active'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 1){ 
    $('#i_1').removeClass.addClass('wire_active'); 
    $('#i_2').removeClass.addClass('wire_inactive'); 
    $('#i_3').removeClass.addClass('wire_inactive'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_active'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 2){ 
    $('#i_1').removeClass.addClass('wire_inactive'); 
    $('#i_2').removeClass.addClass('wire_active'); 
    $('#i_3').removeClass.addClass('wire_inactive'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_active'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 3){ 
    $('#i_1').removeClass.addClass('wire_active'); 
    $('#i_2').removeClass.addClass('wire_active'); 
    $('#i_3').removeClass.addClass('wire_inactive'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_active'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 4){ 
    $('#i_1').removeClass.addClass('wire_inactive'); 
    $('#i_2').removeClass.addClass('wire_inactive'); 
    $('#i_3').removeClass.addClass('wire_active'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_active'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 5){ 
    $('#i_1').removeClass.addClass('wire_active'); 
    $('#i_2').removeClass.addClass('wire_inactive'); 
    $('#i_3').removeClass.addClass('wire_active'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_active'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 6){ 
    $('#i_1').removeClass.addClass('wire_inactive'); 
    $('#i_2').removeClass.addClass('wire_active'); 
    $('#i_3').removeClass.addClass('wire_active'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_active'); 
    $('#o_7').removeClass.addClass('wire_inactive'); 
} 
if(randomnumber == 7){ 
    $('#i_1').removeClass.addClass('wire_active'); 
    $('#i_2').removeClass.addClass('wire_active'); 
    $('#i_3').removeClass.addClass('wire_active'); 

    $('#o_0').removeClass.addClass('wire_inactive'); 
    $('#o_1').removeClass.addClass('wire_inactive'); 
    $('#o_2').removeClass.addClass('wire_inactive'); 
    $('#o_3').removeClass.addClass('wire_inactive'); 
    $('#o_4').removeClass.addClass('wire_inactive'); 
    $('#o_5').removeClass.addClass('wire_inactive'); 
    $('#o_6').removeClass.addClass('wire_inactive'); 
    $('#o_7').removeClass.addClass('wire_active'); 
} 
}); 
}); 
</script> 

的目标是根据切换类的输入线(标记为I_0到I_3)和输出线(标记为O_0到o_7)由随机数发生器产生的数字。但是,当我点击按钮(其ID设置为pressme)时,我得到未被捕获的TypeErrors。任何人都可以请在解决这个问题时指出我的正确方向吗?

+0

就像一个快速放在一边,你可以使用逗号分组选择器,就像这样:'$('#i_1,#i_2,.. 。#o_6,#o_7).doStuff()'。 – Bojangles

+0

请发布您的浏览器控制台的确切类型错误。 – Bojangles

+0

你不能''.removeClass.addClass()'。 'removeClass'是一个函数。 –

回答

2

removeClass没有会员名为addClass,所以你不能写removeClass.addClass('')removeClass是一个函数,你必须调用它:

$('#o_7').removeClass('wire_inactive').addClass('wire_active'); 

您可以减少所有的代码,以

// inactivate all 
$('#o_0, #o_1, #o_2, #o_3, #o_4, #o_5, #o_6, #o_7').removeClass('wire_active').addClass('wire_inactive'); 

// activate random item 
$('#o_' + randomnumber).removeClass('wire_inactive').addClass('wire_active'); 

...并采用相同的逻辑为i_物品;我不确定你在开关它们之间的逻辑是什么......

+0

而不是手动输入它,一个简单的循环就足够了。 – Zirak

+0

谢谢大卫!这解决了这个问题。目的是在学校网站上创建一个小页面,让学生们可以玩弄二进制解码器的工作原理 –

+0

@Zirak:一个循环肯定会起作用,并且像'$(“* [id^='o_'] “)'也可能会这样做。如果我可以改变标记,我可能只是使用一个普通的类名。 –