大牛在哪里???关于动态生成<input type="file">的问题。
本人动态生成语句如下;
var input_file=document.createElement('input');
input_file.setAttribute('type','file');
input_file.setAttribute('name','pictures[]');
if(window.addEventListener)
{
input_file.addEventListener('change',PreviewImage);
}
else
{
input_file.attachEvent('onchange',PreviewImage)
}
function PreviewImage()
{
this.value;//函数里面调用这句,在chrome,FF中有效,在IE中却无效,该怎么解决这个兼容问题
}
还有额外问问:addEventListener('change',函数名) 如果该函数带参数,又该怎么办呢?
------解决方案--------------------应该是低版本的IE无效吧?
低版本的IE,这个时候,this是等于window的,IE9+的应该是可以的。
function PreviewImage(e){
e = e
------解决方案--------------------
window.event;//获取事件
var target = e.srcElement
------解决方案--------------------
e.target;//获取目标元素
var tagName = target.tagName.toLowerCase();//获取目标元素的标签名,并变成小写
if(tagName == "input"){
//判断是否为input标签。如果是则执行
alert(target.value);//获取input的value值。
}
}
试试这样写呗,我这里带的e作为参数,在绑定事件时,是可以不写的。至于其他的参数,你就再套一层函数吧,类似这样
function PreviewImage(e){
function aa(x,y){
e = e
------解决方案--------------------
window.event;//获取事件
var target = e.srcElement
------解决方案--------------------
e.target;//获取目标元素
var tagName = target.tagName.toLowerCase();//获取目标元素的标签名,并变成小写
if(tagName == "input"){
//判断是否为input标签。如果是则执行
alert(target.value);//获取input的value值。
}
}
aa(x,y);
}
试试。。
------解决方案--------------------attachEvent方法添加的事件,this为window对象,不是对应的控件
input_file.setAttribute('type','file');
input_file.setAttribute('name','pictures[]');
if(window.addEventListener)
{
input_file.addEventListener('change',
function(){PreviewImage(input_file,....其他参数)},false);
}
else
{
input_file.attachEvent('onchange',
function(){PreviewImage(input_file,....其他参数)})
}
function PreviewImage
(f,....其他参数)
{
f.value;//函数里面调用这句,在chrome,FF中有效,在IE中却无效,该怎么解决这个兼容问题
}