将javascript变量传递给html对象的属性" data-url"

时间:2016-10-17 02:20:04

标签: javascript html variables url

我试图在我的javascript中放置一个变量,该变量将进入一个html对象的url。我尝试过分配属性" data-url"正在部分使用嵌入式调查表。我也试过setAttribute而没有成功。

<div class="typeform-widget" data-url="https://eatforklore.typeform.com/to/XPDPsx?p1=xxxxx&amp;p2=xxxxx&amp;p3=xxxxx&amp;p4=xxxxx" data-text="Mo. 1 Product Reviews" style="width: 100%; height: 500px;"></div>
<script>// <![CDATA[
var a = document.getElementsByTagName('typeform-widget');
a.data-url = "https://eatforklore.typeform.com/to/XPDPsx?p1=" + p1;

(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'widget.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()
// ]]></script>

2 个答案:

答案 0 :(得分:0)

getElementsByTagName是:

  1. 不是您想要的 - 请改用getElementsByClassName
  2. 给你一个阵列。
  3. 在数组上调用set atrribute将不起作用。看起来你想做的事情就像是:

    <div class="typeform-widget" data-url="https://eatforklore.typeform.com/to/XPDPsx?p1=xxxxx&amp;p2=xxxxx&amp;p3=xxxxx&amp;p4=xxxxx" data-text="Mo. 1 Product Reviews" style="width: 100%; height: 500px;"></div>
    <script>// <![CDATA[
    var a = document.getElementsByClassName('typeform-widget');
    for(var i = 0; i < a.length; i ++)
      a[i].setAttribute('data-url','https://eatforklore.typeform.com/to/XPDPsx?p1=' + p1);
    
    (function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'widget.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()
    // ]]></script>

    编辑:如果您希望获取页面上的每个getElmentsByTagName,但您的代码使用的是类名而不是标记名,那么div会很有用。 p>

    编辑2:修复了循环 - 感谢指出我的疏忽@JPO:)

答案 1 :(得分:0)

document.getElementsByTagName根据标记选择节点,而不是类。例如,如果我想选择页面上的所有链接,我会使用:

var links = document.getElementsByTagName('a');

@ ian-mundy建议getElementsByClassName是正确的,但for循环中有错误。它应该看起来像:

var a = document.getElementsByClassName('typeform-widget');
for(var i = 0; i < a.length; i++) {
    var link = a[i];
    link.setAttribute('data-url','https://eatforklore.typeform.com/to/XPDPsx?p1=' + p1);
}