Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript文档.getElementById().value='';已执行字段,但未生效_Javascript_Jquery_Forms_File Io - Fatal编程技术网

Javascript文档.getElementById().value='';已执行字段,但未生效

Javascript文档.getElementById().value='';已执行字段,但未生效,javascript,jquery,forms,file-io,Javascript,Jquery,Forms,File Io,我正在尝试制作一个按钮来清除旁边的输入。到目前为止,我的代码是这样的 <input type="file" name="lay4img1" id="lay4img1"> <a href="javascript:;" onclick=" if(document.getElementById('lay4img1').value != '') { document.getElementById('lay4img1').value = '';

我正在尝试制作一个按钮来清除旁边的输入。到目前为止,我的代码是这样的

<input type="file" name="lay4img1" id="lay4img1">
<a href="javascript:;"
   onclick="
     if(document.getElementById('lay4img1').value != '') {
       document.getElementById('lay4img1').value = '';
       alert('clear success');
     } else { 
       alert('failed'); 
     }">
   <input type="button" value="Clear">
</a>

当我选择一个文件并使
lay4img1
具有值,然后按下按钮时,会执行警报
clear success
,因此
document.getElementById也会执行,但字段仍然不是空的?我的代码出了什么问题


除了<代码> <代码>之外,我还有其他字段,所以我不想,不能使用<代码> <代码>,因为它将清除整个窗体,我认为这不是用户友好的。

< P>这是绑定处理程序的一种可怕方式。此外,用锚点包装按钮完全没有意义。考虑使用JS添加事件侦听器。此侦听器删除旧输入,并将其替换为新输入:

HTML:


下面是一个演示:

如果输入字段是如下所示的同级字段。。。您可以使用
onClick
属性尝试此javascript代码

<form>
     <input type="file" name="lay4img1" id="lay4img1">
     <button type="button" onClick="this.parentNode.getElementsByName('lay4img1')[0].value=new Array();">Clear</button>
</form>

清楚的

适合我。这对meMe来说也很好。。。你用的是哪种浏览器?是的,为我工作你的浏览器是什么?真的吗??我在Ubuntu 12.04上使用Opera 12.02。奇怪,它在这里不起作用。嗯,那我试试另一个浏览器。对不起,我对Javascript和web编程不熟悉。我能知道为什么这被认为是一种可怕的方式吗?也可以将值传递给clickhandler,我指的是document.getElementById('mybutton').addEventListener(clickhandler(value));,否?
addEventListener
在IE8-中不受支持,IE8-是比Opera更流行的浏览器(不幸的是)。@tenoukishi您的javascript最好与标记分离。这样可以更容易地维护JS和HTML,并且不会不必要地扰乱HTML文件。@TendouKishi还为安全问题添加了一个修复程序抱歉,但我不能使用button type=“reset”,因为它会重置整个表单。我需要“清除”按钮来清除输入type=“file”,不想清除整个表单,因为用户重新输入所有内容会很烦人。@tenoukishi实际上你不需要发布完整表单。。。告诉我,两个输入字段都在标记内。。。他们是兄弟姐妹吗。。。??
function clickhandler(){
     var input = document.getElementById('lay4img1');

     var replacement = document.createElement('input');
     replacement.type = "file";
     replacement.id = 'lay4img1';
     replacement.name = 'lay4img1';

     if(input.value != '') {
       input.parentElement.replaceChild(replacement, input);
       alert('clear success');
     } else { 
       alert('failed'); 
     }
}
var button = document.getElementById('mybutton');
if (!button.addEventListener) {
    button.attachEvent("onclick", clickhandler);
}
else {
    button.addEventListener("click", clickhandler, false);
}
<form>
     <input type="file" name="lay4img1" id="lay4img1">
     <button type="button" onClick="this.parentNode.getElementsByName('lay4img1')[0].value=new Array();">Clear</button>
</form>