Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript开关_Javascript_Switch Statement_Case - Fatal编程技术网

Javascript开关

Javascript开关,javascript,switch-statement,case,Javascript,Switch Statement,Case,我正在制作一个黄道带日历,需要一个0-11的符号开关。我已经编写了HTML代码,该代码会在月份下拉,并在年度中输入文本。该标志应使用id“output”,并应显示在文本中。我不确定我是否正确使用了开关,我的数学是否导致了问题,或者为什么它没有发送到输出 HTML代码: <div><label for="sign">Sign</label><input type="text" name ="sign" id

我正在制作一个黄道带日历,需要一个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;

}

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

请删除域检查,然后重试,看看它是否有效

错误:

1如果year&&year.value&&year.value.length==4{ 年份=parseIntyear.value


2主html未声明元素输出

正则表达式可能与小写url不匹配。如果出现这种情况,结果将为null

您应该在使用匹配结果之前检查它。类似于以下内容:

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

另外,请验证正则表达式是否确实执行了您想要的操作。

因为我的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代码和文档。getElementID'output'=sign.value;

你能展示一下你是如何导出url的吗?仅供参考,用数组替换switch语句不是更简单吗?var signs=['Rat','Ox',…];sign=signs[year];我必须使用switch语句。此外,我的代码中没有派生任何URL。我不知道为什么会不断出现此错误。我没有在代码中添加任何域检查?或者我认为我没有。我的html代码中唯一的一件事是你能提供html以便我可以重复此问题吗?谢谢Charles,我也是通过删除year.value.len得出此结论的th==4部分,然后将输出放在html中。使用F12开发工具IE或Chrome,您可以轻松调试JavaScript。到目前为止,我发现了这个代码错误,并对其进行了更正,但仍然没有任何结果:year=parseIntyears.value;好的,我让它开始工作,我意识到我的html代码也试图拉符号而不是输出。我有一个JavaScript代码可以使用span因此,我在html中添加了一个,id='output',而不是标签signI,我刚要说的是您没有输出元素。我很高兴您自己发现了这一点。因此我认为我的firefox浏览器有问题,因为错误不是来自我的代码文件。它指出了这一点。。。