【问题标题】:Jquery Javascript make an if statement into a case statement not workingJquery Javascript将if语句变成case语句不起作用
【发布时间】:2011-05-05 01:20:11
【问题描述】:

我正在使用 Jquery。这个 if 语句有效:

if ($(this).siblings(".numOfMatchedKeywords").text() == 1) {
                    $(this).siblings(".numOfMatchedKeywords").css({'color':'#0099ff'})
               }

但是当我试图把它变成一个开关盒时,我无法让它工作:

var numWord = $(this).siblings(".numOfMatchedKeywords").text();
                switch (numWord){
                    case 1: 
                        numWord.css({'color':'#0099ff'})
                    break;
                    case 2: 
                        numWord.css({'color':'#33cc33'})
                    break;
                    case 3: 
                        numWord.css({'color':'#ff0099'})
                    break;
                }

我做错了什么?

【问题讨论】:

    标签: javascript jquery if-statement switch-statement


    【解决方案1】:

    使用parseInt()

    parseInt($(this).siblings(".numOfMatchedKeywords").text(), 10);
    

    另外,numWord 是文本而不是 jQuery 对象。

    var numWord = parseInt($(this).siblings(".numOfMatchedKeywords").text(), 10);
    var $sib =$(this).siblings(".numOfMatchedKeywords");
    switch (numWord) {
    case 1:
        $sib.css({
            'color': '#0099ff'
        })
        break;
    case 2:
        $sib.css({
            'color': '#33cc33'
        })
        break;
    case 3:
        $sib.css({
            'color': '#ff0099'
        })
        break;
    }
    

    【讨论】:

    • 好奇,parseInt末尾的10是什么意思?
    • parseInt 的第二个参数是您希望它使用的基数,虽然它是一个可选参数,默认为基数 10您应该始终明确指定它,否则 parseInt 假定带有前导“0”的文本将是八进制,前导“0x”表示十六进制。
    【解决方案2】:

    压缩版:

    var numWord = parseInt($(this).siblings(".numOfMatchedKeywords").text());
    var colors = ['', '#0099ff', '#33cc33', '#ff0099'];
    $(this).siblings(".numOfMatchedKeywords").css('color', colors[numWord]);
    

    【讨论】:

    • 哇,做得很好。我什至不明白这是如何工作的,但它比下面的答案少了 157 个字符。您能否解释一下它是如何工作的,以帮助我和其他偶然发现它的人理解?
    • 很高兴看到它可以帮助您。好吧,我为颜色创建了一个数组,numWord 用作选择正确颜色的索引。我为索引 0 添加了一个空的第一项,因为您的计数从 1 开始。您还可以删除该空元素并使用 numWord - 1 作为索引。如果您需要更多详细信息,请告诉我。
    【解决方案3】:

    我猜测 if 语句对 .text() 和 1 执行了一些自动转换,并将字符串和整数等同起来,而 switch 语句则等同于 ===。 不保证以上,但我建议尝试: '案例“1”:instead of案例1:`

    此外,您将 css 应用到您设置为等于元素文本的 numWord,而不是元素本身。

    【讨论】:

      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多