当用户单击链接时更改href
Change href when user clicks link
好的,所以我试图向链接添加一个id示例:
<a href="http://google.com/stats.php?go=normal">normal</a>
<a href="http://google.com/stats.php?go=normalmedium">normal medium</a>
<a href="http://google.com/stats.php?go=normalmediumhigh">normal medium high</a>
<a href="http://google.com/stats.php?go=normalhigh">normal high</a>
<a href="http://google.com/stats.php?go=superhigh">super high</a>
默认情况下,链接是这样的,但如果他们点击,比如说一个按钮或链接这样:
<a href="#" onclick="changeIt('bnone9099');>burner one</a>
<a href="#" onclick="changeIt('bnone9034');>burner two</a>
<a href="#" onclick="changeIt('bnone9098');>burner three</a>
当他们点击其中一个链接时,如果他们点击"burner one",它应该添加一个id,比如这个例子:
<a href="http://google.com/stats.php?go=normal&id=bnone9099">normal</a>
<a href="http://google.com/stats.php?go=normalmedium&id=bnone9099">normal medium</a>
<a href="http://google.com/stats.php?go=normalmediumhigh&id=bnone9099">normal medium high</a>
<a href="http://google.com/stats.php?go=normalhigh&id=bnone9099">normal high</a>
<a href="http://google.com/stats.php?go=superhigh&id=bnone9099">super high</a>
等等,如果他们点击
<a href="#" onclick="changeIt('back');>default</a>
它应该像这个一样将链接恢复正常
<a href="http://google.com/stats.php?go=normal">normal</a>
<a href="http://google.com/stats.php?go=normalmedium">normal medium</a>
<a href="http://google.com/stats.php?go=normalmediumhigh">normal medium high</a>
<a href="http://google.com/stats.php?go=normalhigh">normal high</a>
<a href="http://google.com/stats.php?go=superhigh">super high</a>
我希望这个例子不要太复杂!谢谢:)
function changer(){
var changedArr = [];
this.changeIt = function($this, str ){
if(str!="back"){
$this = document.getElementById($this);
$this.href = $this.href+"&id="+str;
changedArr.push( $this );
}else{
for( var i=0, len=changedArr.length;i<len;i++){
var lastInd = changedArr[i].href.lastIndexOf("&");
changedArr[i].href = changedArr[i].href.substr(0,lastInd);
}
}
};
}
var chHandler = new changer();
和html。。。
<a id="link1" href="http://google.com/stats.php?go=normal">normal</a>
<a id="link2" href="http://google.com/stats.php?go=normalmedium">normal medium</a>
<a id="link3" href="http://google.com/stats.php?go=normalmediumhigh">normal medium high</a>
<a id="link4" href="http://google.com/stats.php?go=normalhigh">normal high</a>
<a id="link5" href="http://google.com/stats.php?go=superhigh">super high</a>
而且。。。
<a href="#" onclick="chHandler.changeIt('link1','bnone9099');">burner one</a>
<a href="#" onclick="chHandler.changeIt('link2','bnone9034');">burner two</a>
<a href="#" onclick="chHandler.changeIt('link3','bnone9098');">burner three</a>
<a href="#" onclick="chHandler.changeIt('dummy','back');">BACK</a>
以上代码的说明。我们正在创建一个新的对象"changer()",在changeIt类中,我们传递两个参数-第一个是要编辑的链接的id,第二个是值的/id数据。
我们将更改后的链接保存在一个名为changedArr的数组中,当单击back(因为它将"back"作为第二个参数而触发)时,我们将在changedArr中执行for循环,并删除最后一次出现&…之后的所有内容;。。。。(在这种情况下总是id arg)
你可以在这里看到一个工作示例,http://jsfiddle.net/H2YHw/
我过去也做过类似的事情。它是用PHP编写的,但想法基本相同。我经常使用它,尤其是在处理页码时,当我添加&p=3
链接到特定页面时。我只是把它放在我的杂物箱里。不管怎样,我就是这样处理的。
- 您需要检查您的url是否已经有id参数
- 如果是,那么就更改它,如果不是简单地添加一个
要过滤参数,您可以编写一个方法,该方法将接受两个字符串,一个字符串的参数为id,另一个字符串为值。它必须做到以下几点。
split
http://google.com/stats.php?go=superhigh&id=333231
通过字符来获取url的第二部分(参数)- CCD_ 4 url的第二部分-CCD_-这将为您提供一个包含所有参数及其值的数组。注意:检查是否包含&如果没有,则转到步骤3
- 对于循环通过它们中的每一个和
split
,通过=-array[0]
是您的参数,array[1]
是值。如果您的参数与所需的参数匹配,请使用新值和break对其进行更新。如果没有,那么在url的末尾添加一组新的参数/值
我希望这是有道理的。
参考:http://www.quirksmode.org/js/strings.html#split
让我们在中使用jquery的.data()函数
function changeIt(arg){
// I highly recommend you add something to control the target 'a' tags
// 'the_link_undercontrol' is merely my assumption
$('a.the_link_undercontrol').each(function(){
var $t = $(this);
if(arg == 'back'){
if($t.data('originalLnk')){
$t.attr('href', $t.data('originalLnk'))
}
} else {
var href = $t.attr('href');
if(href.indexOf('?') != -1){
// you need to check if 'id' is the only parameter!!
// and for best practice, get your param properly encoded
$t.attr('href', href + '?id=' + encodeURIComponent(arg);
} else {
$t.attr('href', href + '&id=' + encodeURIComponent(arg);
}
$t.data('orginalLnk', href);
}
}
}
相关文章:
- 在单击href链接的同时下载文件
- D3 Javascript HREF链接替换
- Webscratching自动化如何在没有链接TAG的情况下模拟点击HREF链接
- 如何制作href链接和<李>在一个包装中
- 希望在单击href链接时显示我的广告
- 将href链接添加到通过js鼠标悬停显示的图像
- 如何在 Squarespace 中重定向 href 链接
- 如何使用 jQuery 替换文本中的 HREF 链接
- 要发送到控制器的 HREF 链接中的哈希值
- 通过javascript将url参数传递到多个不同的href链接中
- 将属性添加到带有href链接但没有#的元素
- 选项卡中的a href链接没有执行任何操作
- 使用php使用href链接将输入的文本框值传递到另一个页面
- 如何使用 JavaScript 动态点击“href 链接”
- 更改 xlink:当图像在 D3js 中未退出时 svg 图像的 href 链接
- href:链接回上一个页面上的某个类
- 使用 jQuery 添加一个指向
- 项的 href 链接
- 如何使用javascript读取html“”标签中的所有href链接
- 包装在两个容器中的未命名 href 链接
- 在特定位置具有目标空白的 href 链接