Javascript “想要显示”;“真的”;及;假;按钮

Javascript “想要显示”;“真的”;及;假;按钮,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个按钮网格,用户通过单击(打开网格)链接,然后单击该网格中的按钮来打开网格。我想做的是,如果用户单击“True或False”按钮,那么它应该在“答案数”文本框下面输出按钮“True”和“False”。但它没有显示任何东西。我做错了什么 代码如下: $(".gridBtns").click(function() { var clickedNumber = this.value; $('.answerBtns').each(function (index) { if

我有一个按钮网格,用户通过单击(打开网格)链接,然后单击该网格中的按钮来打开网格。我想做的是,如果用户单击“True或False”按钮,那么它应该在“答案数”文本框下面输出按钮“True”和“False”。但它没有显示任何东西。我做错了什么

代码如下:

$(".gridBtns").click(function() {

   var clickedNumber = this.value;

   $('.answerBtns').each(function (index) {
      if (index < clickedNumber)
         $(this).show();
      else
         $(this).hide();
   });

   if (document.getElementsByClassName("gridBtns").value == "True or False")
   {
       document.getElementId("answerTrue").style.display = "block";
   }

});
$(“.gridBtns”)。单击(函数(){
var clickedNumber=此值;
$('.answerBtns')。每个(函数(索引){
如果(索引<点击编号)
$(this.show();
其他的
$(this.hide();
});
if(document.getElementsByClassName(“gridBtns”).value==“True或False”)
{
document.getElementId(“answerTrue”).style.display=“block”;
}
});

完整代码在JSFIDLE中,单击

getElementsByClassName
返回节点列表(其行为类似于数组),而不是单个元素

getElementsByClassName
返回节点列表(类似于数组),而不是单个元素

与上述代码相等的jQuery代码是

if($('.gridBtns').val() == 'True or False'){
  $('#answerTrue').show(); //you may also use .css() for it, but show() has the same    result
}

与上述代码相等的jQuery代码为

if($('.gridBtns').val() == 'True or False'){
  $('#answerTrue').show(); //you may also use .css() for it, but show() has the same    result
}

我在这里看到这段代码已经有一段时间了:

如果使用jQuery,使用它。突然间执行document.getElementById(..)是毫无意义的。只要到处使用jQuery选择器和方法(f.i..addClass(..)而不是.className=..)。jQuery是访问DOM的方式,使用mix只是让人困惑

此外,我注意到您在该Ui中的大多数问题都源于以下事实:

  • 这是一个糟糕的用户界面(无意冒犯,请仔细想想)
  • 您可以使用UI来存储状态。不要那样做。UI应该依赖于状态,而不是相反

我在这里看到这段代码已经有一段时间了:

如果使用jQuery,使用它。突然间执行document.getElementById(..)是毫无意义的。只要到处使用jQuery选择器和方法(f.i..addClass(..)而不是.className=..)。jQuery是访问DOM的方式,使用mix只是让人困惑

此外,我注意到您在该Ui中的大多数问题都源于以下事实:

  • 这是一个糟糕的用户界面(无意冒犯,请仔细想想)
  • 您可以使用UI来存储状态。不要那样做。UI应该依赖于状态,而不是相反
而不是这个:

if (document.getElementsByClassName("gridBtns").value == "True or False")
{
    document.getElementId("answerTrue").style.display = "block";
}
试试这个:

if (this.id=='btnTrueorFalse') {
    $('#answerTrue').show();
    $('#answerFalse').show();
} 
除了在另一篇文章中已经提到的1/多错误之外,看起来原版只是在错误的地方寻找错误的属性。

而不是这个:

if (document.getElementsByClassName("gridBtns").value == "True or False")
{
    document.getElementId("answerTrue").style.display = "block";
}
试试这个:

if (this.id=='btnTrueorFalse') {
    $('#answerTrue').show();
    $('#answerFalse').show();
} 


除了在另一篇文章中已经提到的1/多错误之外,看起来原版只是在错误的位置查找错误的属性。

FWIW
getElementsByClassName
在IE8及以下版本中不可用。。。但是为什么不在这种情况下使用jQuery呢?您正在不同位置的不同语句中比较同一个元素1)$(“.gridBtns”)。单击2)document.getElementsByClassName(“gridBtns”)。value我不确定发生了什么。有趣的是,
querySelector('.classname')
在IE8中起作用,在这方面,这是一个比
getElementsByClassName
更好的选择。感谢所有试图回答我问题的人,非常感谢。我已经找到了一个答案,所以这个问题已经解决了。
getElementsByClassName
在IE8及以下版本中不可用。。。但是为什么不在这种情况下使用jQuery呢?您正在不同位置的不同语句中比较同一个元素1)$(“.gridBtns”)。单击2)document.getElementsByClassName(“gridBtns”)。value我不确定发生了什么。有趣的是,
querySelector('.classname')
在IE8中起作用,在这方面,这是一个比
getElementsByClassName
更好的选择。感谢所有试图回答我问题的人,非常感谢。我找到了一个答案,所以这个问题是solvedHi,thannks,用于转换为jquery,但是当我从网格中选择“True或False”按钮时,它确实会在下面显示“True”或“Flase”按钮。我已经编辑了JSFIDLE,以包含您提供给我的代码。不知道为什么它没有出现,因为这就是
display:block
(show()不做任何其他事情)所做的。因此,通过css使用“$”('anserTrue').css('display','inline');与之相反,Thanks用于转换为jquery,但当我从网格中选择“True或False”按钮时,它确实会在下方显示“True”或“Flase”按钮。我已经编辑了JSFIDLE,以包含您提供给我的代码。不知道为什么它没有出现,因为这就是
display:block
(show()不做任何其他事情)所做的。因此,通过css使用“$”('anserTrue').css('display','inline');相反,我的问题是我不知道很多jquery函数,所以如果你知道我的意思,我倾向于使用更多的javascript编程。但是有人向我展示了jquery等价物,这样我就可以使用它,这样我的代码就不会与jquery和GetElementssory混淆,这个答案只不过是不切实际的dreck。Sizzle是一个效率极低的垃圾堆。尽可能使用
document.getElementById
覆盖
$(“#任意”)
。信不信由你,速度差很大。??否决票的数量让我困惑:作者显然需要jQuery选择器。我真的相信并了解性能差异,但这在这里无关紧要。你的建议对你想要交流的东西有负面影响。是的,我的问题是我不知道很多jquery函数,所以如果你知道我的意思,我倾向于使用更多的javascript编程。但是有人向我展示了jquery等价物,这样我就可以使用它,这样我的代码就不会与jquery和GetElementssory混淆,这个答案只不过是不切实际的dreck。Sizzle是一个效率极低的垃圾堆。尽可能使用
document.getElementById
覆盖
$(“#任意”)
。有一个很大的速度dif