【问题标题】:How can I develop an in-site linking program with multiple dropdown?如何开发具有多个下拉菜单的站点内链接程序?
【发布时间】:2020-05-24 16:35:00
【问题描述】:

我需要开发一个类似的多重下拉菜单应用程序,我们在 Shopify 电子商务 Site 上使用该应用程序来链接到网站内的所有轮胎类型页面。我试过了,但我做不到,因为我在 JS 和 Jquery 方面的经验不够,而且我不知道如何开始。你能帮帮我吗?

我想将下拉列表中选择的选项的 json 值添加到下面链接的末尾,该链接应位于“立即查找”(Hemen Bul)按钮中。 https://kolayoto.com/collections/lastikleri?_=

如果我们的选择是“Yaz”、“225”、“60”和“15”。我们的选择将被添加到链接的末尾,当我们单击“立即查找”(Hemen Bul)按钮时,它将引导我们到下面的链接。 https://kolayoto.com/collections/lastikleri?_=pf&pf_t_mevsim=Mevsim-Yaz&pf_t_genislik=Taban%20Geni%C5%9Fli%C4%9Fi-225&pf_t_oran=Kesit%20Oran%C4%B1-60&pf_t_cap=Jant%20%C3%87ap%C4%B1-15

这样,我会从主页链接到所有季节和轮胎类型的页面。

Example Json file that I will use in the application.

{
  "mevsim": {
    "DörtMevsim": "pf&pf_t_diger_oezellikler=DiğerÖzellikler-4Mevsim",
    "Yaz": "pf&pf_t_mevsim=Mevsim-Yaz",
    "Kış": "pf&pf_t_mevsim=Mevsim-Kış"
  },
  "tabangenisligi": {
    "135": "&pf_t_genislik=Taban%20Genişliği-135",
    "145": "&pf_t_genislik=Taban%20Genişliği-145",
    "155": "&pf_t_genislik=Taban%20Genişliği-155",
    "165": "&pf_t_genislik=Taban%20Genişliği-165",
    "175": "&pf_t_genislik=Taban%20Genişliği-175",
    "185": "&pf_t_genislik=Taban%20Genişliği-185",
    "195": "&pf_t_genislik=Taban%20Genişliği-195",
    "205": "&pf_t_genislik=Taban%20Genişliği-205",
    "215": "&pf_t_genislik=Taban%20Genişliği-215",
    "225": "&pf_t_genislik=Taban%20Genişliği-225",
    "235": "&pf_t_genislik=Taban%20Genişliği-235",
    "245": "&pf_t_genislik=Taban%20Genişliği-245",
    "255": "&pf_t_genislik=Taban%20Genişliği-255"
  },
  "kesitorani": {
    "30": "&pf_t_oran=Kesit%20Oranı-30",
    "35": "&pf_t_oran=Kesit%20Oranı-35",
    "40": "&pf_t_oran=Kesit%20Oranı-40",
    "45": "&pf_t_oran=Kesit%20Oranı-45",
    "50": "&pf_t_oran=Kesit%20Oranı-50",
    "55": "&pf_t_oran=Kesit%20Oranı-55",
    "60": "&pf_t_oran=Kesit%20Oranı-60",
    "65": "&pf_t_oran=Kesit%20Oranı-65",
    "70": "&pf_t_oran=Kesit%20Oranı-70",
    "75": "&pf_t_oran=Kesit%20Oranı-75"
  },
  "jantcapi": {
    "13": "&pf_t_cap=Jant%20Çapı-13",
    "14": "&pf_t_cap=Jant%20Çapı-14",
    "15": "&pf_t_cap=Jant%20Çapı-15",
    "16": "&pf_t_cap=Jant%20Çapı-16",
    "17": "&pf_t_cap=Jant%20Çapı-17",
    "18": "&pf_t_cap=Jant%20Çapı-18",
    "19": "&pf_t_cap=Jant%20Çapı-19",
    "20": "&pf_t_cap=Jant%20Çapı-20"
  }
}

我不知道如何将Json值链接到下拉列表中,并在选择这些值时将它们添加到“立即查找”按钮中的链接中。

作为一个新的软件开发人员,我真的很需要这个开发,我正在等待你的帮助。非常感谢您。

【问题讨论】:

  • 链接应该只在所有选择框中都有选择的情况下才有效,还是如果只有其中一个是值,用户也应该能够找到所有过滤的条目?

标签: javascript html jquery json shopify


【解决方案1】:

您可以这样做:将 url 部分添加为选项的值,并将所有选定的值添加到 url。在示例中,我仅添加了每个类别的几个选项作为演示,单击“查找全部”按钮后,URL 将出现在控制台中。要真正访问该 url,请取消注释 location.href = url 行。

$("#find").on("click", function() {
  let mevsim = ($("#mevsim").val() == 0) ? "" : $("#mevsim").val();
  let tabangenisligi = ($("#tabangenisligi").val() == 0) ? "" : $("#tabangenisligi").val();
  let kesitorani = ($("#mevsim").val() == 0) ? "" : $("#kesitorani").val();
  let jantcapi = ($("#mevsim").val() == 0) ? "" : $("#jantcapi").val();
  let url = "https://kolayoto.com/collections/lastikleri?_=" + mevsim + tabangenisligi + kesitorani + jantcapi;
  console.log("url: " + url);
  /* location.href = url */
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="mevsim">
  <option value="0">Please select</option>
  <option value="pf&pf_t_diger_oezellikler=DiğerÖzellikler-4Mevsim">DörtMevsim</option>
  <option value="pf&pf_t_mevsim=Mevsim-Yaz">Yaz</option>
  <option value="pf&pf_t_mevsim=Mevsim-Kış">Kış</option>
</select><br /><br />
<select id="tabangenisligi">
  <option value="0">Please select</option>
  <option value="&pf_t_genislik=Taban%20Genişliği-135">135</option>
  <option value="&pf_t_genislik=Taban%20Genişliği-145">145</option>
  <option value="&pf_t_genislik=Taban%20Genişliği-155">155</option>
</select><br /><br />
<select id="kesitorani">
  <option value="0">Please select</option>
  <option value="&pf_t_oran=Kesit%20Oranı-30">30</option>
  <option value="&pf_t_oran=Kesit%20Oranı-35">35</option>
  <option value="&pf_t_oran=Kesit%20Oranı-40">40</option>
</select><br /><br />
<select id="jantcapi">
  <option value="0">Please select</option>
  <option value="&pf_t_cap=Jant%20Çapı-13">13</option>
  <option value="&pf_t_cap=Jant%20Çapı-14">14</option>
  <option value="&pf_t_cap=Jant%20Çapı-15">15</option>
</select><br /><br />
<button id="find">
  Find Now
</button>

更新:由于无法将所有 url 部分作为值添加到选项中,因此也可以从 JSON 中获取它们。请注意,url 部分不再需要是选项值,这只是示例代码的剩余部分。取消注释 location.href = url 行以通过单击“立即查找”按钮转到 URL。

let data = {
  "mevsim": {
    "DörtMevsim": "pf&pf_t_diger_oezellikler=DiğerÖzellikler-4Mevsim",
    "Yaz": "pf&pf_t_mevsim=Mevsim-Yaz",
    "Kış": "pf&pf_t_mevsim=Mevsim-Kış"
  },
  "tabangenisligi": {
    "135": "&pf_t_genislik=Taban%20Genişliği-135",
    "145": "&pf_t_genislik=Taban%20Genişliği-145",
    "155": "&pf_t_genislik=Taban%20Genişliği-155",
    "165": "&pf_t_genislik=Taban%20Genişliği-165",
    "175": "&pf_t_genislik=Taban%20Genişliği-175",
    "185": "&pf_t_genislik=Taban%20Genişliği-185",
    "195": "&pf_t_genislik=Taban%20Genişliği-195",
    "205": "&pf_t_genislik=Taban%20Genişliği-205",
    "215": "&pf_t_genislik=Taban%20Genişliği-215",
    "225": "&pf_t_genislik=Taban%20Genişliği-225",
    "235": "&pf_t_genislik=Taban%20Genişliği-235",
    "245": "&pf_t_genislik=Taban%20Genişliği-245",
    "255": "&pf_t_genislik=Taban%20Genişliği-255"
  },
  "kesitorani": {
    "30": "&pf_t_oran=Kesit%20Oranı-30",
    "35": "&pf_t_oran=Kesit%20Oranı-35",
    "40": "&pf_t_oran=Kesit%20Oranı-40",
    "45": "&pf_t_oran=Kesit%20Oranı-45",
    "50": "&pf_t_oran=Kesit%20Oranı-50",
    "55": "&pf_t_oran=Kesit%20Oranı-55",
    "60": "&pf_t_oran=Kesit%20Oranı-60",
    "65": "&pf_t_oran=Kesit%20Oranı-65",
    "70": "&pf_t_oran=Kesit%20Oranı-70",
    "75": "&pf_t_oran=Kesit%20Oranı-75"
  },
  "jantcapi": {
    "13": "&pf_t_cap=Jant%20Çapı-13",
    "14": "&pf_t_cap=Jant%20Çapı-14",
    "15": "&pf_t_cap=Jant%20Çapı-15",
    "16": "&pf_t_cap=Jant%20Çapı-16",
    "17": "&pf_t_cap=Jant%20Çapı-17",
    "18": "&pf_t_cap=Jant%20Çapı-18",
    "19": "&pf_t_cap=Jant%20Çapı-19",
    "20": "&pf_t_cap=Jant%20Çapı-20"
  }
}

$("#find").on("click", function() {
let mevsim, tabangenisligi, kesitorani, jantcapi;
if($("#mevsim").val() == 0){
mevsim = "";
}
else {
   let selected = $("#mevsim").find("option:selected").text();
  
   $.each(data, function(i, val) {
    if (i == "mevsim") {
      $.each(val, function(key, value) {
        if (key == selected) {
          mevsim = value;
        }
      });
    }
  });
}
if($("#tabangenisligi").val() == 0){
tabangenisligi = "";
}
else {
   let selected = $("#tabangenisligi").find("option:selected").text();
  
   $.each(data, function(i, val) {
    if (i == "tabangenisligi") {
      $.each(val, function(key, value) {
        if (key == selected) {
          tabangenisligi = value;
        }
      });
    }
  });
}
if($("#kesitorani").val() == 0){
kesitorani = "";
}
else {
   let selected = $("#kesitorani").find("option:selected").text();
  
   $.each(data, function(i, val) {
    if (i == "kesitorani") {
      $.each(val, function(key, value) {
        if (key == selected) {
          kesitorani = value;
        }
      });
    }
  });
}
if($("#jantcapi").val() == 0){
jantcapi = "";
}
else {
   let selected = $("#jantcapi").find("option:selected").text();
  
   $.each(data, function(i, val) {
    if (i == "jantcapi") {
      $.each(val, function(key, value) {
        if (key == selected) {
          jantcapi = value;
        }
      });
    }
  });
}
  let url = "https://kolayoto.com/collections/lastikleri?_=" + mevsim + tabangenisligi + kesitorani + jantcapi;
  console.log("url: " + url);
  /* location.href= url */
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="mevsim">
  <option value="0">Please select</option>
  <option value="pf&pf_t_diger_oezellikler=DiğerÖzellikler-4Mevsim">DörtMevsim</option>
  <option value="pf&pf_t_mevsim=Mevsim-Yaz">Yaz</option>
  <option value="pf&pf_t_mevsim=Mevsim-Kış">Kış</option>
</select><br /><br />
<select id="tabangenisligi">
  <option value="0">Please select</option>
  <option value="&pf_t_genislik=Taban%20Genişliği-135">135</option>
  <option value="&pf_t_genislik=Taban%20Genişliği-145">145</option>
  <option value="&pf_t_genislik=Taban%20Genişliği-155">155</option>
</select><br /><br />
<select id="kesitorani">
  <option value="0">Please select</option>
  <option value="&pf_t_oran=Kesit%20Oranı-30">30</option>
  <option value="&pf_t_oran=Kesit%20Oranı-35">35</option>
  <option value="&pf_t_oran=Kesit%20Oranı-40">40</option>
</select><br /><br />
<select id="jantcapi">
  <option value="0">Please select</option>
  <option value="&pf_t_cap=Jant%20Çapı-13">13</option>
  <option value="&pf_t_cap=Jant%20Çapı-14">14</option>
  <option value="&pf_t_cap=Jant%20Çapı-15">15</option>
</select><br /><br />
<button id="find">
  Find Now
</button>

【讨论】:

  • 嗨,马蒂亚斯,非常感谢您的帮助。我尝试添加您发送到我们 Shopify 网站的代码,并成功添加了其中一些。但是,只选择了几个选项后,会添加 0,而不是未选择的选项。 gyazo.com/7dc62df3463e0e4c446fc413bb807012 另外,我们可以从带有循环的json文件中获取它,而不是一一添加选项吗?因为有数百种产品选项,并且一一添加会导致网站的繁琐和代码复杂性。
  • 代码中没有注释掉location.href = url这一行?奇怪的是,为未选择的选项添加了 0,如果值为 0,则不应添加任何内容。是的,可以从 json 文件中获取 url 部分,为此投入更多的工作。调整后我会通知您,但可能需要一些时间。
  • 是的,我刚刚发现了“location.href = url”部分,现在它可以工作了。在前 2 个选项中选择 Yaz 和 145 并将最后 2 个留空后,将创建一个像这样的链接。 kolayoto.com/collections/… 也可以在这里预览网站xi568avjeriwydhj-25161465961.shopifypreview.com
  • 那我在等你回来从 Json 文件中获取 URL 部分,我会继续研究这个主题。再次非常感谢您,致以最诚挚的问候。
  • @BerkB。我刚刚使用从 json 文件中获取值的第二个解决方案更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2017-01-18
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多