修改全局javascript变量并在HTML中访问它们

时间:2011-11-17 01:15:41

标签: javascript jquery

我很想摆弄javascript - 但这就是我想要实现的目标。

我有这样的代码:

    $('#numberItems').keyup(function () {
      var num = parseInt($(this).val());
      var price = parseInt($('#price').text());
      var.cost = num * price
      $('#total').text(cost);
    }).keyup();

这对我正在做的事情确实很好 - 但我想做的是将成本变量并将其粘贴在链接中 - 例如:

<a href="http://www.google.com/<script>document.write(cost)</script>">Googly</a>

我意识到,要使变量成为全局变量,我需要坚持使用函数,但是我的计算如何保存到它?

3 个答案:

答案 0 :(得分:0)

在脚本文件的顶层,在任何document.ready()处理程序之外,添加:

var cost;

然后,您可以在任何地方引用它,只是不要像var这样声明:

$('#numberItems').keyup(function () {
  var num = parseInt($(this).val());
  var price = parseInt($('#price').text());
  cost = num * price
  $('#total').text(cost);
}).keyup();

您不能将该变量与document.write()一起使用,因为document.write()只能在解析文档时使用,并且在加载文档之前未初始化cost变量。在加载文档后使用document.write()会导致当前文档被删除并启动新文档。

您可以使用cost变量动态设置href(在文档加载后),如下所示:

<a id="myLink" href="http://www.google.com/">Googly</a>

$("#myLink").attr("href", "http://www.google.com/" + cost);

请注意,您只需使用字符串数学将成本添加到现有字符串中。

或者,您可以使用jQuery从头开始创建链接,设置它的href并将其插入到您的页面中。

答案 1 :(得分:0)

除非您在其他地方访问变量,否则实际上并不需要将变量设为全局变量。如果您希望在用户更改id为numberItems的元素时发生URL更改,您实际上需要向该A元素添加ID属性,然后使用javascript更新HREF属性。

<a id="aElementToChange" href="http://www.google.com/<script>document.write(cost)</script>">Googly</a>

和javascript(在你的$('#total')之后.text(cost);行):

var aElementToChange = document.getElementById("aElementToChange");
aElementToChange.setAttribute("href", "http://www.google.com/" + cost);

您可以根据需要将javascript更改为jquery。

答案 2 :(得分:0)

远离全球变量!的xD

它们是解决所有问题的最简单方法,但它们会给您带来很多困难 稍后如果你升级你的代码!

如上所述,在id标记中添加<a>属性 然后只需在上面的代码中添加$("#id_you_added").attr("href","<a href='http://www.google.com/"+cost+"'>Googly</a>");,以便动态修改

我希望这会有所帮助