“ Uncaught TypeError: a.indexOf ไม่ใช่ฟังก์ชั่น” ข้อผิดพลาดเมื่อเปิดโปรเจคพื้นฐานใหม่


250

ฉันได้สร้างใหม่ 5 foundation new my-projectโครงการมูลนิธิผ่านทุบตีด้วย เมื่อผมเปิดไฟล์ index.html ใน Chrome ข้อผิดพลาดจะแสดงในคอนโซลที่มีต้นกำเนิดในUncaught TypeError: a.indexOf is not a functionjquery.min.js:4

ฉันสร้างโครงการโดยทำตามขั้นตอนบนไซต์พื้นฐาน แต่ฉันไม่สามารถกำจัดข้อผิดพลาดนี้ได้ รากฐานและ jQuery ดูเหมือนว่ามีการรวมและเชื่อมโยงอย่างถูกต้องในไฟล์ index.html และไฟล์ app.js ที่เชื่อมโยงนั้นรวมถึง$(document).foundation();

ไม่มีใครรู้ว่าสิ่งที่ทำให้เกิดข้อผิดพลาดนี้? และวิธีการแก้ปัญหาอาจจะเป็นอย่างไร

สกรีนช็อตข้อความแสดงข้อผิดพลาดของคอนโซล

คำตอบ:


820

ข้อผิดพลาดนี้อาจจะเกิดจากการ jQuery เหตุการณ์นามแฝงเช่น.load(), .unload()หรือ.error()ที่ทุกคนจะได้เลิกใช้ ตั้งแต่ jQuery 1.8 ค้นหานามแฝงเหล่านี้ในรหัสของคุณและแทนที่ด้วย.on()วิธีการแทน ตัวอย่างเช่นแทนที่ข้อความที่คัดค้านดังต่อไปนี้:

$(window).load(function(){...});

ด้วยดังต่อไปนี้:

$(window).on('load', function(){ ...});

3
ฉันไม่ได้ใช้กับ 2.2.1 @ ผู้ใช้ แต่ทันทีที่เปลี่ยนเป็น 3.3.1 ฉันต้องทำการเปลี่ยนแปลงนี้
Codemonkey

@DanielLlano คุณประหยัดวันของฉัน
Owaiz Yusufi

1
สิ่งนี้แก้ไขได้สำหรับฉัน
Radagast the Brown

@Crine $(function() {});สำหรับเอกสารที่พร้อมซึ่งไม่เหมือนกับเหตุการณ์โหลดหน้าต่าง นอกจากนี้ doc ก็พร้อมที่จะยิงก่อนที่จะโหลดหน้าต่าง
Robert

สวัสดีคุณช่วยบอกฉันทีว่าทำไม ก่อนที่มันจะทำงานกับเวอร์ชั่น 1.12.3 และมันก็หยุดทำงานเมื่อฉันย้ายไปที่ 3.4.1
Armando Marques Sobrinho

35

ข้อผิดพลาดนี้มักเกิดจากรุ่น jQuery ที่เข้ากันไม่ได้ ฉันพบข้อผิดพลาดเดียวกันกับที่foundation 6เก็บ ที่เก็บของฉันใช้อยู่jQuery 3แต่รากฐานจำเป็นต้องใช้เวอร์ชันก่อนหน้านี้ ฉันเปลี่ยนมันแล้วมันใช้งานได้

ถ้าคุณดูที่รุ่นของ jQuery ที่จำเป็นโดยมูลนิธิ 5 อ้างอิง"jquery": "~2.1.0"มันฯ

คุณยืนยันได้หรือไม่ว่าคุณกำลังโหลด jQuery เวอร์ชันที่ถูกต้อง

ฉันหวังว่านี่จะช่วยได้.


30

โปรดเพิ่มปลั๊กอินการย้ายข้อมูล jQuery ด้านล่าง

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>

1
ฉันยืนยันว่าสิ่งนี้ได้แก้ไขปัญหาแล้ว
Morad Hamdy

17

ฉันต้องเผชิญกับปัญหานี้เช่นกัน ฉันใช้jquery.poptrox.min.jsสำหรับการเปิดและซูมภาพและฉันได้รับข้อผิดพลาดซึ่งกล่าวว่า:

“ Uncaught TypeError: a.indexOf ไม่ใช่ฟังก์ชัน”ข้อผิดพลาด

นี้เป็นเพราะindexOfไม่ได้รับการสนับสนุนในเพื่อให้การแก้ไขที่ง่ายในการนี้คือการเปลี่ยนเป็นรุ่นเก่า3.3.1/jquery.min.js2.1.0/jquery.min.js

สิ่งนี้แก้ไขได้สำหรับฉัน


2
ฉันย้ายไป 3.2.1 ถึง 2.1.0 และใช้งานได้ สิ่งนี้ใช้ได้สำหรับฉัน
Siddharth

ยินดีต้อนรับ! @Siddharth
Harshit Pant

1
ไม่เคยย้อนกลับไปใช้รุ่นต่างๆเนื่องจากอาจทำให้เกิดปัญหาด้านความปลอดภัยที่สำคัญ
Ajay Takur

1
หากเป็นกรณีนี้คุณสามารถแทนที่โค้ดด้านล่าง $ (หน้าต่าง) .load (ฟังก์ชั่น () {... }); ด้วยสิ่งต่อไปนี้: $ (หน้าต่าง) .on ('โหลด', ฟังก์ชัน () {... }); ที่จะใช้งานได้! :)
Harshit Pant

13

หนึ่งในเหตุผลที่เป็นไปได้คือเมื่อคุณโหลด jQuery TWICEเช่น:

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>

ดังนั้นตรวจสอบซอร์สโค้ดของคุณและลบ jQuery load ที่ซ้ำกัน


2
มันเกิดขึ้นกับ wordpress, การโหลดเวอร์ชั่นของตัวเอง, ถ้าคุณกำลังโหลดเวอร์ชั่น jquery ที่ด้านข้างของคุณ
Olou

1

ฉันกำลังใช้jQuery 3.3.1และฉันได้รับข้อผิดพลาดเดียวกันในกรณีของฉัน URL นั้นObjectเป็นสตริงเทียบกับ

เกิดอะไรขึ้นกับสิ่งที่ฉันได้รับURL = window.location- ซึ่งคืนสิ่งของ เมื่อฉันเปลี่ยนเป็นwindow.location.href- มันทำงานโดยไม่มีe.indexOfข้อผิดพลาด


0

ฉันแก้ไขได้โดยติดตั้งเวอร์ชันที่ถูกต้องของJqueryโปรเจ็กต์ที่ต้องใช้npm

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.