2011-11-17 91 views
0

我对JavaScript的摆弄很新 - 但这里是我试图完成的。修改全局JavaScript变量并在HTML中访问它们

我有这样的代码,例如:

$('#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> 

我意识到,使变量全球性的,我需要的功能外贴,但后来怎么办我的计算节省呢?

+0

请原谅我的无知:有什么用把一个变量放在一个真正的网址?无论如何,这是你试图实现谷歌结账的东西吗? –

回答

0

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

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

和JavaScript(你$( '#总')文本(成本)后,行。):

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

您可以将JavaScript的改变jquery的,因为你需要。

+0

是否可以只添加到网址而不是设置整个东西? – Elliot

+0

是的,我相信所以通过做一个setAttribute(“href”,aElementToChange.getAttribute(“href”)+ cost);你可以看到继承问题,因为每次键入时它都会像婴儿一样繁殖:) – abelito

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

你忘了'href'附近的引号,你有额外的“费用后:) –

+0

@DanyKhalife - 谢谢我修复了错字 – jfriend00

0

远离全局变量! xD

它们是所有问题的最简单解决方案,但如果您升级代码,它们会在以后造成很多困难 !

为说,添加id属性为<a>标签 然后,只需在代码中添加$("#id_you_added").attr("href","<a href='http://www.google.com/"+cost+"'>Googly</a>");的上方,使得它被动态修改

我希望这有助于