如何为Boolean对象赋值

时间:2013-12-20 15:15:51

标签: javascript boolean-expression

我真的不喜欢提问并依赖别人,但我必须这样做! 我需要用户输入两到五个单词,由fontvorto1,fontvorto2,fontvorto3,fontvorto4和fontvorto5指定。 我必须确定,他/她不会留空中间的文本字段。 因此,在每个输入试验中,我通过onclick检查上面的字段是否已填写。如果没有,则用户收到警报并且输入中断。 为了最小化代码量,我创建了以下模型的五个函数:

    function fV2k() {x = document.getElementsByName('fontvorto1')[0].value.substr(0, 6); return Boolean(x == "Skribu" || x === "");}
    function fV3k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); return  Boolean(x == "Skribu" || x === "");}

等等到fV25,其中“Skribu”是文本输入字段fontvorto1,fontvorto2等的初始值。 输入字段的onclick读取:

    onclick="if(fV2k()){alert(admonition);} else {this.value='';}"

但这不起作用。还

    onclick="p = fV2k(); if(p){alert(admonition);} else {this.value='';}"

不起作用。 所以我在一些关于布尔和布尔对象的教程中挣扎,我得出结论我应该创建“var p = new Boolean()”。 现在我有:

    var p = new Boolean();
function fV2k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); p = Boolean(x == "Skribu" || x === "");}
function fV3k() {x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); p = Boolean(x == "Skribu" || x === "");}

等等,当然这是错误的,因为我应该将p视为一个函数,而不是在这里赋值。 每次我介绍一个“创新”,我都感到乐观,现在我解决了这个问题,但每次我的希望都破灭了。 我希望我很清楚,有些“专家”喜欢这个问题。

1 个答案:

答案 0 :(得分:1)

保持简单。您的函数应该只测试值并返回结果,如下所示:

function fV3k() {
    var x = document.getElementsByName('fontvorto2')[0].value.substr(0, 6); 
    return x === "Skribu" || x === "";
}

或者可能将名称作为参数,因此您可以减少需要写入的函数总数:

function fV(name) {
    var x = document.getElementsByName(name)[0].value.substr(0, 6); 
    return x === "Skribu" || x === "";
}

然后将其用作

onclick="if(fV('fontvorto1')){alert(admonition);} else {this.value='';}"
...
onclick="if(fV('fontvorto2')){alert(admonition);} else {this.value='';}"