如何连接几个不同的变量来创建URL

时间:2016-11-17 16:53:24

标签: javascript html-table concatenation

我尝试使用for循环生成一堆不同的网址,以便通过Javascript在我的表格中使用。

我想要的最终网址是:http://www.enviroptics.com/ecommerce/environmentally-sealed-thermocouple-nb4-caxl-14u-12-aag.html

网址基本上分为4个部分:

  1. 前缀:' http://www.enviroptics.com/ecommerce/'
  2. 产品名称:'环保密封热电偶 - '
  3. 产品编号:' nb4-caxl-14u-12-aag'
  4. 后缀:' .html'
  5. 前缀和后缀不会改变。产品名称也将在javascript中保持不变,但我希望它作为一个单独的变量,因为我计划制作一堆javascripts,每个不同的产品名称1。产品编号将针对我表格中的每个不同行和链接进行更改。

    这是我到目前为止所做的:

    var eo_url_1 = 'http://www.enviroptics.com/ecommerce/';
    var eo_url_ext = "environmentally-sealed-thermocouple-"
    var eo_url_2 = '.html';
    

    我还有一个生成我的部件号的for循环,当我使用控制台日志时,我得到了这个:

    console.log(eopartnum[i]); //yields the following part number results
    //NB4-CAXL-14U-12-AAG
    //NB4-CAXL-14U-12-BAG
    //NB4-CAXL-14U-12-CAG
    //(24 more similar results)
    

    因此例如eopartnum [0] = NB4-CAXL-14U-12-AAG。我试图用它来连接所有东西:

    window.navtoprod = function() {
      window.document.location = eo_url_1.concat(eo_url_ext,eopartnum[i],eo_url_2);
    }
    

    但似乎是通过试图引导我进入' http://www.enviroptics.com/ecommerce/environmentally-sealed-thermocouple-undefined'或' http://www.enviroptics.com/ecommerce/environmentally-sealed-thermocouple-[object%20text]'

    以下是我一直在工作的w3:http://www.w3schools.com/code/tryit.asp?filename=F0VL5U0MKS2H

5 个答案:

答案 0 :(得分:2)

如果您想要将变量值插入字符串,此处的所有其他答案都有效。看看你提供的w3示例,我认为你的问题更多地与变量范围有关,因为你有一个通用的方法并且你正在循环你的产品,你就失去了变量eopartnums的概念。是

对于您的具体示例,最好直接从表格行中读取产品代码,请参阅下面更改的方法

window.navtoprod = function(evt) {
  var eo_url_1 = 'http://www.enviroptics.com/ecommerce/';
  var eo_url_2 = '.html';
  var partNum = evt.target.parentNode.children[0].innerText;
  window.document.location = eo_url_1.concat(eo_url_ext,partNum,eo_url_2);
}

答案 1 :(得分:1)

将window.navtoprod更改为如下

window.navtoprod = function() {
  window.document.location = eo_url_1.concat(eo_url_ext,this.getElementsByTagName("a")[0].childNodes[0].nodeValue,eo_url_2);
}

答案 2 :(得分:0)

var eo_url_1 = 'http://www.enviroptics.com/ecommerce/';
var eo_url_ext = "environmentally-sealed-thermocouple-"
var eo_url_2 = '.html',
    yourCode= 'aaaa-aaaa-aaaa',
    resultUrl=eo_url_1+eo_url_ext+yourCode+eo_url_2;

console.log(resultUrl);

var eo_url_1 = 'http://www.enviroptics.com/ecommerce/';
    var eo_url_ext = "environmentally-sealed-thermocouple-";
    var eo_url_2 = '.html',
        yourCode= 'aaaa-aaaa-aaaa',
        resultUrl=''+eo_url_1.concat(eo_url_ext,yourCode,eo_url_2);

    console.log(resultUrl);

答案 3 :(得分:0)

ES6为您提供了一种很好的方法,可以将变量值插入到字符串中。我使用您的方案here创建了一个带有示例的JSFiddle。

以下是使用该示例的代码段,该代码会将URL记录到控制台

Signature: doc.GetFrame(frame=<PyOleMissing object at 0x06F20BC8>, FrameVariant=<PyOleMissing object at 0x06F20BC8>)
Docstring: <no docstring>
File:      c:\programming\python\src\<comobject winx32.docfile>
Type:      method

这将导致以下日志记录到控制台

enter image description here

答案 4 :(得分:0)

如果我的代码概述正确,则i将无法在window.navtoprod函数中使用。我看到window.navtoprod被注册为事件处理程序的地方,但我没有看到i被声明为全局变量的地方。因此,该功能无法选择产品编号,因为它不知道哪一个。您可以更改window.navtoprod,以便它自己找到i。我想这取决于表格行。这可以通过使用event - 作为事件处理程序传递给函数的对象来找到。