簡體   English   中英

Javascript include()不是函數

[英]Javascript includes() is not a function

我有以下HTML / JS,可在其中解析DOM元素,並嘗試查找丟失的元素並將其刪除。 但是,它說: includes()不是函數。 執行此操作時,我得到newHTMLnewHTMLO對象類型(newHTMLO只是一個實驗變量)。 我嘗試了Array.from()Object.valueOf() ,它們都產生相同的結果。

有人可以幫我解決這個問題嗎?

var deleteLinks = $(".remove-button .remove-from-cart");
console.log("registered: " + deleteLinks.length);
deleteLinks.on('click', function(ev){
    ev.preventDefault();
    console.log("registered: " + deleteLinks);
    var currentHTML = $('.product');
    var currentText = $('.product .product-details .name-header');  
    var newHTML ;
    var deleteIndices = [];
        $.ajax({
        url: this.href,
        type: "GET",
        dataType: "html",
          success: function(data) {
              newHTMLO = $(data).find('.product .product-details .name-header').map(function() { return this.innerText.toUpperCase(); });   
              newHTML = Object.values(newHTMLO);
              for(i = 0; i  < newHTML.length; i++){
                  console.log(i);
                  console.log(newHTML[i]);
                  console.log(typeof newHTML);
                  console.log(typeof newHTMLO);
                  if (!(newHTML.includes(currentText[i].innerText.toUpperCase()))) {
                console.log("found mismatch for index " + i);
                deleteIndices.push(i);
                  }
              }
          }
    });

   for(i = 0; i < deleteIndices.length; i++) {
    console.log("removing " + deleteIndices[i]);
    currentHTML[deleteIndices[i]].remove();
}
});

認為您遇到的問題是,您正在將jQuery對象數組視為常規對象數組,事實並非如此。

更改這一行,看看是否能解決您的問題...

newHTMLO = $(data)
    .find('.product .product-details .name-header')
    .toArray()    // converts a jQuery object array to a regular array
    .map(function() { return this.innerText.toUpperCase(); });

如果那沒有幫助,那么我將其刪除無關緊要的。

這是一個例子。 Map1是您當前的方法,而map2是修改后的版本...

 var divs = $("body").find("div"); var map1 = divs.map(function(d) { return d.innerText; }); var map2 = divs.toArray().map(function(d) { return d.innerText; }); console.log("map1: " + map1) console.log("map2: " + map2); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div>div #1</div> <div>div #2</div> <div>div #3</div> <div>div #4</div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM