javascript - 输入选择器将 jquery 代码转换为 javascript 问题
问题描述
我试图将jquery
代码转换为,javascript
但我不知道如何写这个javascript
jQuery 代码
$('<input type="file" accept="image/*" />')
我想将此代码转换为javascript
试过的代码
var uploader = document.querySelector('input[type="file"]');
在那次火灾点击事件之后,uploader
但无法工作
点击功能码
uploader[0].click(function(){
console.log('test');
});
uploader.click(function(){
console.log('test');
});
错误类型错误:无法读取 null 的属性“0”
解决方案
一个函数.click
模拟鼠标点击元素。你需要使用.onclick
handler 有两种方法可以做到:
- 设置元素的onclick属性
uploader.onclick = function()...
var uploader = document.querySelector('input[type="file"]');
uploader.onclick = function(e){
console.log('Hello!', e.target);
};
<input type="file" accept="image/*" />
- 设置 onclick 事件的处理程序
uploader.addEventListener('click', fucntion()...
var uploader = document.querySelector('input[type="file"]');
uploader.addEventListener('click', function(e){
console.log('Hello!', e.target);
});
<input type="file" accept="image/*" />
addEventListener 不会覆盖元素上现有的事件处理程序,而 onclick 会覆盖任何现有的 onclick = function 事件处理程序。
addEventListener 不适用于旧版本的 Internet Explorer ( > IE 9 ),它使用 attachEvent ( < IE 9 ),而 onclick 适用于所有浏览器。
- 这是处理动态添加元素上的事件的方法 - 您可以将事件侦听器绑定到
body
并检查单击的元素是否匹配条件。
通过这种方式,事件侦听器不会与绑定到主体的另一个处理程序重叠。
document.body.addEventListener('click', function(e){
if (e.target.tagName == 'INPUT' && e.target.type == 'file') {
var newElement = document.createElement('INPUT');
newElement.type = 'file';
document.body.appendChild(newElement);
console.log('Hello!', e.target);
}
});
<input type="file" accept="image/*" class="field" />
推荐阅读
- javascript - 数组中对象的 JavaScript 冒泡和插入排序
- reactjs - 在没有 Web 服务器的情况下使用 SAML 响应 SSO
- kotlin - 局部函数反射 Kotlin
- azure - 无法将 ~50Mb MYSQL 数据库迁移到应用程序中的 Azure App Service + MySQL
- reactjs - 如何在其他人之上显示数据而不是与 React 复选框同时显示?
- c# - Group.Key.Count() 为所有组返回相同的数字
- r - 如何删除R中的某些记录
- vuejs2 - 如何模拟从已安装的生命周期方法触发的异步方法?
- javascript - 谷歌图表更改各个直方图数据点的颜色
- sql - 执行函数时 PL/SQL Oracle 包错误