javascript:添加onchange事件无反应

1、document.attachlist.annexFile.attachEvent("onchange","alert('ok')");
2、document.getElementById("attachFile").change = function(){alert('ok');}
3、document.getElementById("attachFile").onchange = function(){alert('ok');}
以上均无反应,求救!!!
---------------- html ----------------
<form id="sendlist" name="sendlist" action="" method="post" enctype="multipart/form-data">
<input type="text" name="file" value="" />
<input type="button" name="annex" value="添加附件" onclick="checkAnnex()" /><br/>
<p class="attachNotice" id="attachNotice" name="check_attach">此文件为"秘密"文件</p>
</form>
<form id="attachlist" name="attachlist" action="" method="post" enctype="multipart/form-data">
<input id="attachFile" style="display:none" type="file" name="annexFile" value="" />
</form>
------------------- js ---------------------
function checkAnnex(){
document.getElementById("attachFile").onchange = function(){
var filename = document.attachlist.annexFile.value;
document.sendlist.file.value = filename;
document.attachlist.action="send.php?annexCHK="+filename;
//document.attachlist.submit();
}
}
貌似:document.getElementById("attachFile")是元素而不是对象,请教解决方法!!!

第1个回答  推荐于2018-03-28
用我这个方式试试。让button按钮和file输入框重叠在一起,把file输入框置为透明并重叠到button按钮上边,当你在点击这个按钮的时候其实是点击了file输入框。这样不用js控制就可以达到上传的效果了。
.inputfile{
filter: alpha(opacity=0);-khtml-opacity: 0.0; opacity: 0.0; width: 60px; height:auto; cursor: pointer;
}
.z-inputfile{
position: absolute; z-index: 2;
}
.z-upload{
position: absolute; z-index: 1;
}
<div class="z-inputfile">
<input type="file" name="annexFile" class="inputfile"/>
</div>
<div class="z-upload">
<input type="button" value="上传新图片"/>
</div>本回答被网友采纳
第2个回答  2012-02-06
请把源码粘出来,1、3中方法应该都是可以的,2不对追问

麻烦您再给看看啊?

追答

你看你上面写的本身就是有问题的,一个按钮怎么能有anchange事件呢,你应该改为onclick事件,或者是对你的file文本框加onchange事件

追问

我的代码就是对第一个form中的按钮添加的onclick事件,只是在函数里面给file元素添加onchange事件没有反应啊。
我的本意是用按钮的onclick事件调用input-file的onchange事件,可是input-file是隐藏的,即点击第一个按钮时触发file事件,打开文件浏览对话框,选择后提交第二个表单中包括file的内容。您能帮忙给段可用的代码吗?

追答

你写的这个触发事件其实是有问题的,例如:onclick是当你点击的时候才会触发,而onchange是你改变的时候触发,他不会同时执行的,还有就是当你给你的input-file的style属性设置为none的时候,这个对象还能用么

本回答被提问者采纳
相似回答