Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery在URL末尾添加变量_Javascript_Jquery_Html_Url_Variables - Fatal编程技术网

Javascript 使用jQuery在URL末尾添加变量

Javascript 使用jQuery在URL末尾添加变量,javascript,jquery,html,url,variables,Javascript,Jquery,Html,Url,Variables,到目前为止,我已经做到了 jQuery: function addURL(element) { var baseZipCode = 48180; $(element).attr('href', function() { return this.href + baseZipCode; }); } html: 我的问题是,当用户单击链接,新窗口打开时,一切正常,但当用户再次单击链接而不刷新时,变量会添加两次到链接中 例如: 第一次: 第二次: 在您刷新页面之前,它不会正常工作,任何

到目前为止,我已经做到了

jQuery:

function addURL(element)
{
var baseZipCode = 48180;
$(element).attr('href', function() {
    return this.href + baseZipCode;
});
}
html:


我的问题是,当用户单击链接,新窗口打开时,一切正常,但当用户再次单击链接而不刷新时,变量会添加两次到链接中

例如:

第一次:

第二次:

在您刷新页面之前,它不会正常工作,任何帮助都将不胜感激。提前感谢

这应该是:

function addURL(element)
{
    var baseZipCode = 48180;
    element.href = (element.href + baseZipCode)
        .replace(baseZipCode + baseZipCode, baseZipCode);
}

addURL
函数替换为

function addURL(element)
{
    var baseZipCode = '48180';
    if (element.href.slice(-baseZipCode.length) !== baseZipCode){
        element.href += baseZipCode;
    }
}
没有涉及jQuery。

您可以使用

Javascript:

  jQuery("a").one("click", function(){ // Set a handler that execute once
        var baseZipCode = 48180;
        this.href += baseZipCode; //same as "this.href = this.href + baseZipCode"
    });
HTML:



也许您需要在标记中添加一些类以使其与其他类不同

猜测情况并非如此,但如果链接中已包含
baseZipCode
,则会失败。您最好使用
slice(-baseZipCode.length)
来检查它是否包含在stirngsure的末尾,但是如果您在其他地方找到您的邮政编码而不是放在它的位置,那将是非常不幸运的,因为我将zipcode作为请求属性传递。Thanks@mlwacosmos嘿,一旦我将变量更改为字符串,zipcode就开始再次重复,例如,我将var-zipcode=48180更改为var-zipcode='48180'。如果可以,你能解释一下为什么你的建议不起作用吗anymore@mlwacosmos我修复了它,我只是将变量的值放在这个.href.indexOf()中,而不是变量名+1,做得很好,不需要jQuery。先检查是否存在,然后再添加,还是更好?@iambriansreed,更倾向于。。检查的唯一好处是,您可以指定检查的位置,而仅替换副本就可以(在这种情况下不太可能)替换原始字符串中的另一个匹配项。+1不确定答案是否适用,但
jQuery.fn.one
对我来说是新的。有时
jQuery.fn.one
非常有用。。您只需在第一次单击时执行处理程序,而不是测试每个用户单击。。我认为这是一个很好的解决办法。。
function addURL(element)
{
    var baseZipCode = '48180';
    if (element.href.slice(-baseZipCode.length) !== baseZipCode){
        element.href += baseZipCode;
    }
}
  jQuery("a").one("click", function(){ // Set a handler that execute once
        var baseZipCode = 48180;
        this.href += baseZipCode; //same as "this.href = this.href + baseZipCode"
    });
<a href="http://www.weather.com/weather/today/" target="_blank">Click this</a>