Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error in slick.js: "Uncaught TypeError: Cannot read property 'add' of null"

I used slick js for slider view of image.

Here is my code.

<div class="slider_wrap add-remove">     <%= f.fields_for :images do |image_form| %>       <%#= render 'images_fields', :f => image_form %>         <div>           <%= image_tag image_form.object.picture.url,:class=>"drop_down_link even img_prev" %>         </div>         <div class="image_upload_div">           <div class="image-upload">             <label>               <i class="fa fa-cloud-upload">                 <%= image_form.file_field :picture ,:'data-role'=>"none",:onchange=>"readURL(this);" , :accept => 'image/jpeg , image/png' %>               </i>             </label>           </div>         </div>     <% end %>     <%= f.link_to_add "Add a picture", :images ,:id=>"add_pic" ,:class=>"js-add-slide", :style=>"display: none;"%> </div>  <script> function silder(){     slideIndex = 0;       $('.add-remove').slick({         slidesToShow: 2,         slidesToScroll: 2       });       $('.js-add-slide').on('click', function() {         $('.add-remove').slick('slickAdd');       });        $('.js-remove-slide').on('click', function() {         $('.add-remove').slick('slickRemove');       }); }); function readURL(input) {   if (input.files && input.files[0]) {     var reader = new FileReader();     reader.onload = function (e) {     $('.img_prev').last()       .attr('src', e.target.result)     };      reader.readAsDataURL(input.files[0]);      setTimeout(function(){       $('#add_pic').trigger('click');       silder();     }, 100);   } } </script> 

Now with this code I got slider working, but its not coming proper I am getting error:

Uncaught TypeError: Cannot read property 'add' of null

like image 882
Pooja Mokariya Avatar asked Mar 09 '16 06:03

Pooja Mokariya


People also ask

Can not read property value of null?

The "Cannot read property 'click' of null" error occurs when trying to call the click method on a null value. To solve the error, run the JS script after the DOM elements are available and make sure you only call the method on valid DOM elements.

How do you Reinit slick slider?

After calling an request, set timeout to initialize slick slider. Do not initialize slick slider at start. Just initialize after an AJAX with timeout. That should work for you.

What does Cannot read property of undefined mean?

The "Cannot read properties of undefined" error occurs when trying to access a property on an undefined value. You often get undefined values when: accessing a property that does not exist on an object. accessing an index that is not present in an array.

How do you use slick slider Codepen?

You can also link to another Pen here (use the . css URL Extension) and we'll pull the CSS from that Pen and include it. If it's using a matching preprocessor, use the appropriate URL Extension and we'll combine the code before preprocessing, so you can use the linked Pen as a true dependency.


1 Answers

That's due to calling init twice. This works without error:

$(".slider").not('.slick-initialized').slick() 

Also, "silder" looks like a typo.

Relying on a timeout is also error-prone. Unfortunately, Internet Explorer uses a different event to tell you when the HTML elements and JS libraries have been loaded. There are many libraries to avoid the 100 or so lines of cross-browser code, but the popular and relatively small jQuery solves the timing issue like this:

$(function() {   // Handler for .ready() called. Put the Slick Slider etc. init code here. }) 
like image 175
Cees Timmerman Avatar answered Sep 25 '22 04:09

Cees Timmerman