使用Jquery将变量传递给链接的一部分

时间:2014-07-09 19:49:20

标签: javascript jquery

我正在使用动态,我正在尝试从表单中提取变量并使用它来创建动态URL这是我的代码:

   
<html>
  <head>
    <meta charset="utf-8">
    <script src="new_/jquery.js"></script>

    <script>
      $( document ).ready(function() {
        var $productid = attr("src",parent.window.Xrm.Page.getAttribute('new_productid').getValue());
      });
    </script>
  </head>
  <body style="word-wrap: break-word;">
    <div style="align: center;">
      <script type="text/javascript">
        document.write('<a href="http://www.mywebsite.com/products/'+productid+'">Link to some site</a>');
      </script>
    </div>
  </body>
</html>

谁能看到我做错了什么?

2 个答案:

答案 0 :(得分:1)

你有3个问题:

  1. $productid vs productid
  2. $productid在回调函数中声明,因此与document.write调用的范围不同
  3. 即使$productid在全球范围内,您的document.write来电也很可能会在$(document).ready回调之前发生,因此$productid仍然不会包含您期望的值。< / LI>

    所以你的js在准备好的回调中工作,并在你的html中放置一个占位符锚点,一旦它准备就可以改变

    HTML

    <div style="align: center;">
      <a href="#" id="linkToChange">Some text</a>
    </div>
    

    JS

    $( document ).ready(function() {
        var $productid = attr("src",parent.window.
                                    Xrm.Page.
                                    getAttribute('new_productid').getValue());
        $("#linkToChange").attr("href","http://www.mywebsite.com/products/'+$productid);
    });
    

    也不确定你所调用的函数attr是什么,因为你没有在任何地方定义它,所以你很可能也会因此而出错

答案 1 :(得分:0)

您的脚本在变量被声明之前运行,您在jQuery ready()函数中声明了var,这是在执行脚本块之后发生的。将js脚本移动到一个函数,并在ready()函数中声明var后调用它。