我有js文件(rework.js),功能如下
/**
* Java script functions to set comments for selected rework reason.
*/
function setReworkCheckFields() {
var note = $("#rework_note").val();
var reworknoteImage = document.getElementsByName("reworknote_image");
var reworknoteScript = document.getElementsByName("reworknote_script");
var reworknoteVoice = document.getElementsByName("reworknote_voice");
var reworknoteMusic = document.getElementsByName("reworknote_music");
if ($(reworknoteImage).is(':checked')) {
$("#reworknote_image_note").val(note);
}
if ($(reworknoteScript).is(':checked')) {
$("#reworknote_script_note").val(note);
}
if ($(reworknoteVoice).is(':checked')) {
$("#reworknote_voice_note").val(note);
}
if ($(reworknoteMusic).is(':checked')) {
$("#reworknote_music_note").val(note);
}
}
我已经在html中导入了这个js文件,我在html中添加了不同实现的相同方法,如下所示
<script type='text/javascript' src='style/js/rework.js'></script>
<script type='text/javascript'>
function setReworkCheckFields() {
var note = $("#rework_note").val();
var reworknoteImage = document.getElementsByName("reworknote_image");
var reworknoteScript = document.getElementsByName("reworknote_script");
var reworknoteVoice = document.getElementsByName("reworknote_voice");
var reworknoteMusic = document.getElementsByName("reworknote_music");
if ($(reworknoteImage).is(':checked')) {
$("#reworknote_image_note").val(note);
} else {
$("#reworknote_image_note").val(null);
}
if ($(reworknoteScript).is(':checked')) {
$("#reworknote_script_note").val(note);
} else {
$("#reworknote_script_note").val(null);
}
if ($(reworknoteVoice).is(':checked')) {
$("#reworknote_voice_note").val(note);
} else {
$("#reworknote_voice_note").val(null);
}
if ($(reworknoteMusic).is(':checked')) {
$("#reworknote_music_note").val(note);
} else {
$("#reworknote_music_note").val(null);
}
}
</script>
并调用下面的javascript函数。
<table>
<tr>
<td>Image: <input type="checkbox" name="reworknote_image" ${reworknote_image.workingchecked} onchange="setReworkCheckFields()"/></td>
<td>Script: <input type="checkbox" name="reworknote_script" ${reworknote_script.workingchecked} onchange="setReworkCheckFields()"/></td>
<td>Voice: <input type="checkbox" name="reworknote_voice" ${reworknote_voice.workingchecked} onchange="setReworkCheckFields()"/></td>
<td>Music: <input type="checkbox" name="reworknote_music" ${reworknote_music.workingchecked} onchange="setReworkCheckFields()"/></td>
</tr>
</table>
可以说一下流程如何工作。这有效吗?
答案 0 :(得分:1)
第二个函数将重新声明第一个函数,因此当您调用setReworkCheckFields()
时,您将运行第二个函数。
是的,它有效。就像你重写一个变量一样。
请记住,如果您在代码中再次声明此函数,它还将重新声明此定义。在某些情况下,它是有用的行为,但你必须通过重新声明js函数来充实。
答案 1 :(得分:1)
否 - 流程是在js范围内只定义了最后一个函数,因为它覆盖任何具有相似名称的js代码。
在javascript中没有像Java或其他语言中那样的函数重载。 您可以将代码包装到不同的名称空间:
var MyFirstNameSpace = {
setReworkCheckFields: function(){
// code goes here...
}
};
var MySecondNameSpace = {
setReworkCheckFields: function(){
// code goes here...
}
};
然后你可以调用MyFirstNameSpace.setReworkCheckFields()或MySecondNameSpace.setReworkCheckFields();
一般来说,覆盖javascript全局范围并不是一个好习惯,因为你不知道你的项目将包含哪些其他js代码,这将会搞乱你自己的代码。