我正在为我的项目使用javascript,同时我定义了一些javascript函数,但是当我通过DOMMonster验证函数时,它给出了一个提示,即有太多的全局函数声明。
为了克服这一点,我将我的函数包含在一个自调用函数中,通过该函数我可以删除函数的全局特性。但是,在OnChange事件上调用的2个函数没有启动。有人可以建议我如何让它在同一个内部工作。
的 CODE
(function(){
function createHiddenDateField(elementName) {
// format is DD/MM/YYYY
var finalDate = document.getElementById(elementName + '-DD').value + '/' + document.getElementById(elementName + '-MM').value + '/' + document.getElementById(elementName + '-YYYY').value;
document.getElementById(elementName).value = finalDate;
if(elementName=="securityQuestionAnswerDate"){
document.getElementById("securityQuestionAnswerDate").onchange();
}
return finalDate;
}
})();
CALLER:
<select id="dateofbirth-DD" class="form_field date_field_select
" onchange="createHiddenDateField('dateofbirth')">
<option value="">DD</option>
<option value="01">01
</option>
<option value="02">02
</option>
<option value="03">03
</option>
<option value="04">04
</option>
<option value="05">05
</option>
<option value="06">06
</option>
<option value="07">07
</option>
<option value="08">08
</option>
<option value="09">09
</option>
<option value="10">10
</option>
<option value="11">11
</option>
<option value="12">12
</option>
<option value="13">13
</option>
<option value="14">14
</option>
<option value="15">15
</option>
<option value="16">16
</option>
<option value="17">17
</option>
<option value="18">18
</option>
<option value="19">19
</option>
<option value="20">20
</option>
<option value="21">21
</option>
<option value="22">22
</option>
<option value="23">23
</option>
<option value="24">24
</option>
<option value="25">25
</option>
<option value="26">26
</option>
<option value="27">27
</option>
<option value="28">28
</option>
<option value="29">29
</option>
<option value="30">30
</option>
<option value="31">31
</option>
</select>
答案 0 :(得分:0)
但是,在OnChange事件上调用的2个函数没有启动
与onxyz
属性连接的函数必须是全局变量。这是不使用onxyz
- 属性样式事件处理程序的众多原因之一,因为全局变量是Bad Thing™。
相反,使用现代事件处理来连接处理程序,例如:
document.getElementById("dateofbirth-DD").addEventListener(
"click",
function() {
createHiddenDateField('dateofbirth');
},
false
);
如果您必须支持不支持addEventListener
的过时浏览器,请参阅this answer以获取为您处理这些浏览器的功能。
答案 1 :(得分:-1)
尝试使用get()来执行此操作,并可能使用jquery或angularjs之类的东西 你可以节省时间! http://www.w3schools.com/jsref/jsref_getdate.asp