【问题标题】:Javascript switchJavascript 开关
【发布时间】:2014-09-12 01:16:23
【问题描述】:

我正在制作一个需要开关 0-11 的星座日历。我已经编写了 HTML 代码,该代码会下降月份和年份的文本输入。该标志应使用 id 'output' 并且还应显示在文本中。我不确定我是否正确使用了我的开关,我的数学是否导致了问题,或者为什么它没有发送到输出。

HTML 代码:

            <div><label for="sign">Sign</label><input type="text" 
            name ="sign" id="sign"></div>

Javascript 代码

    if (year && year.value && (year.length == 4)){
        year = parseInt(years.value);
        month = parseInt(month.value);
        if (month < 2) {
            year = (year - 1);
        }

        year = ((year - 1924) % 12);

    } else { // Show Error:
        document.getElementById('year').value = 
        'Please enter valid values.';
    }

    switch (year){
        case 0 :
            block code;
            break;
            etc..

    } // End Switch


    if (output.textContent != undefined) {
        output.textContent = sign;

    } else {
        output.innerText = sign;
    } 

    return false;

}

【问题讨论】:

  • 你能说明你是如何得到url的吗?
  • 仅供参考,用数组替换 switch 语句不是更简单吗? var signs = ['Rat', 'Ox', ...]; sign = signs[year];
  • 我必须使用 switch 语句。此外,我没有在我的代码中派生任何网址。我不知道为什么这个错误不断出现

标签: javascript switch-statement case


【解决方案1】:

您的正则表达式可能无法匹配您的小写网址。发生这种情况时,结果将是null

您应该在使用之前检查match() 结果。像这样的:

var matches = url.toLowerCase().match(/https?:\/\/(.+?)[?#\/$]/);
if (!matches || matches.length < 2) {
   // Handle error
   ...
} else {
  // Keep going
  var domain = matches[1];
  ...
}

另外,请验证您的正则表达式是否确实按照您的意图进行。

【讨论】:

  • 到目前为止,我发现了这个代码错误并纠正了它,但仍然没有:year = parseInt(years.value);
  • 好的,我让它工作了,我意识到我的 HTML 代码也试图拉符号而不是输出。而且我有一个javascript代码来使用段落和跨度,所以我在我的html中放置了一个

    id='output' 而不是标签符号

  • 我正要提到你没有output 元素。我很高兴你自己解决了这个问题。
  • 所以我认为我的 Firefox 浏览器有问题,因为该错误不是来自我的代码文件。它一直指向这个...superfish.com/ws/…
【解决方案2】:

因为我的javascript代码innerText

    if (output.textContent != undefined) {
        output.textContent = sign;

    } else {
        output.innerText = sign;
    } 

我不得不删除

<div><label for="sign">Sign</label><input type="text" 
        name ="sign" id="sign"></div>

替换成

<p>Sign: <span id="output"></span></p>

我本可以轻松更改 javascript 代码和 document.getElementID('output') = sign.value;

【讨论】:

    【解决方案3】:

    问题应该是由域检查而不是计算函数引起的。

    删除域检查并重试(看看它是否有效)。

    错误:

    1) if (year && year.value && (year.value.length == 4)){ 年 = parseInt(.value);

    2) 主 html 没有声明元素“输出”

    【讨论】:

    • 我没有在我的代码中添加任何域检查?或者我认为我没有。我的 html 代码中唯一的东西是
    • 你能提供 html 以便我重复这个问题吗?
    • 感谢 Charles,我也得出了这个结论,删除了 year.value.lenth == 4 部分,然后将输出放入 html。
    • 使用F12开发者工具(IE或Chrome),可以轻松调试JavaScript。
    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多