我真的不喜欢提问并依赖别人,但我必须这样做! 我需要用户输入两到五个单词,由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视为一个函数,而不是在这里赋值。 每次我介绍一个“创新”,我都感到乐观,现在我解决了这个问题,但每次我的希望都破灭了。 我希望我很清楚,有些“专家”喜欢这个问题。
答案 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='';}"