Jquery Javascript将if语句变成case语句不起作用

发布于 2024-11-05 04:10:49 字数 761 浏览 1 评论 0原文

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

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

但是当我尝试将它变成 switch case 时,我无法让它工作:

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;
                }

我做错了什么?

i'm using Jquery. This if-statement works:

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

But when i tried to turn it into a switch case, I can't get it to work:

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;
                }

what am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

美人骨 2024-11-12 04:10:49

使用 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;
}

use parseInt()

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

Also, numWord is text and not a jQuery object.

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;
}
往昔成烟 2024-11-12 04:10:49

压缩版本:

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

Compacted version:

var numWord = parseInt($(this).siblings(".numOfMatchedKeywords").text());
var colors = ['', '#0099ff', '#33cc33', '#ff0099'];
$(this).siblings(".numOfMatchedKeywords").css('color', colors[numWord]);
情绪少女 2024-11-12 04:10:49

我猜测 if 语句对 .text() 和 1 执行一些自动转换,并使字符串和整数相等,而 switch 语句则执行相当于 === 的操作。
不能保证上述内容,但我建议尝试:
'case "1":instead ofcase 1:`

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

I'm guessing the if statement performs some auto-conversion on .text() and 1 and equates the string and the integer, whereas the switch statement does teh equivalent of ===.
Not guaranteeing that above, but i'd recommend trying:
'case "1":instead ofcase 1:`

Also, you're applying your css to numWord which you set equal to the text of the element, not the element itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文