我在Javascript中使用“ document.getElementById”具有一组功能齐全的代码。但是,当我将其更改为Jquery时,它将不起作用(并且没有错误)。
<!DOCTYPE html>
<html>
<head>
<style></style>
<script src="jquery-3.3.1.min.js"></script>
<script language="javascript">
function formChk(){
var success=true;
var types = ["Western","Chinese","Local","Beverage"];
var nameTxtBox=$("#name"); <!--This doesn't work-->
var picturesTxtBox=document.getElementById("pictures"); <!--This works fine-->
相应的id =“ name”和id =“ pictures”在以下代码中:
<p><input type="text" id="name" name="name"></p>
<p><input type="text" id="pictures" name="pictures"></p>
控制台中没有错误消息。但是,代码并未按预期运行。整个代码应该执行表单验证检查-如果用户输入为空,则应抛出错误消息。但是,当我将“ getElementById”更改为JQuery $(#);时,表单验证不起作用。
为什么会这样?不是$(#);完全等同于document.getElementById?
答案 0 :(得分:2)
不是$(#);完全等同于document.getElementById?
绝对不是,它们返回的元素非常不同,jQuery
返回的是
在DOM中基于传递的参数或通过传递HTML字符串创建的匹配元素的集合。
document.getElementById()
返回时
描述与指定ID匹配的DOM元素对象的Element对象;如果在文档中未找到匹配的元素,则为null。
document.getElementById() documentation
如果为了与以前的代码兼容,必须访问jQuery集合中的Element对象,则可以使用数组符号。
因此,如果选择器匹配单个元素(例如ID),则可以
let el = $('#selector')[0];
模仿document.getElementById()
的行为。
答案 1 :(得分:1)
$("#name")
返回一个jQuery对象,而不是document.getElementById("pictures");
这样的Element对象,以返回需要从jQuery对象中获取Element对象的Element对象。
$("#name")[0]
答案 2 :(得分:0)
如果要获取#name的值,则为
Out of memory: Kill process 28715 (postgres) score 150 or sacrifice child
答案 3 :(得分:0)
$('#fileUpload').val('');
我们必须在val()内部传递值。