Javascript 如何基于Url中的查询字符串以编程方式更改Url

Javascript 如何基于Url中的查询字符串以编程方式更改Url,javascript,jquery,html,asp.net,Javascript,Jquery,Html,Asp.net,生成到表中的GridView: <table id="ctl00_centerContent_GridView1"> <tr> <th scope="col"> <!-- COLUMN INFORMATION --> </th> </tr> <tr> <td

生成到表中的GridView:

<table id="ctl00_centerContent_GridView1">
        <tr>
            <th scope="col">
                <!-- COLUMN INFORMATION -->
            </th>
        </tr>
        <tr>
            <td style="font-weight:bold;"><a href="icard.aspx?cid=34&amp;cpid=345&amp;ccid=908">Insurance 1</a></td> <!-- link color by default is blue and turns orange on hover -->
            <td align="center">&nbsp;</td>
            <td align="center">Y</td>
            <td>908 as ave</td>
            <td align="center">N</td>
            <td align="center">N</td>
            <td align="center">Y</td>
            <td>Electronic</td>
            <td style="white-space:nowrap;">090-093-2311</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="font-weight:bold;"><a href="icard.aspx?cid=34&amp;cpid=345&amp;ccid=542">Insurance 2</a></td>
            <td align="center">&nbsp;</td>
            <td align="center">Y</td>
            <td>908 as ave</td>
            <td align="center">N</td>
            <td align="center">N</td>
            <td align="center">Y</td>
            <td>Electronic</td>
            <td style="white-space:nowrap;">090-093-2311</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="font-weight:bold;"><a href="icard.aspx?cid=34&amp;cpid=345&amp;ccid=587">Insurance 3</a></td>
            <td align="center">&nbsp;</td>
            <td align="center">Y</td>
            <td>908 as ave</td>
            <td align="center">N</td>
            <td align="center">N</td>
            <td align="center">Y</td>
            <td>Electronic</td>
            <td style="white-space:nowrap;">090-093-2311</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td style="font-weight:bold;"><a href="icard.aspx?cid=34&amp;cpid=345&amp;ccid=125">Insurance 4</a></td>
            <td align="center">&nbsp;</td>
            <td align="center">Y</td>
            <td>908 as ave</td>
            <td align="center">N</td>
            <td align="center">N</td>
            <td align="center">Y</td>
            <td>Electronic</td>
            <td style="white-space:nowrap;">090-093-2311</td>
            <td>&nbsp;</td>
        </tr>
</table>
  • 如何将锚的Url替换为
    Javascript:void(0)如果
    
    cid
    是542或587
  • 如何将文本颜色更改为黑色,将光标更改为默认值 箭

您可以使用
.attr
设置属性(也不需要两次调用
.css
):


您的代码需要进行一些更改才能完成所需的操作,因为当前它在当前页面的url中查找
ccid
变量,而不是
href
属性中的url

首先,将
每个
更改为只查看
a
元素:

$("#ctl00_centerContent_GridView1 tr td a").each(function() {
----------------------------------------^ here
$("#ctl00_centerContent_GridView1 tr td a").each(function() {
    var url = $(this).attr("href");
    var cid = getParameterByName(url, 'ccid');
    if (cid == "542" || cid == "587"){
        $(this)
            .attr('href','javascript:void(0)')
            .css({color:'black',cursor:'default'});
    }
});
接下来,更改
getParameterByName
以获取url和要查找的参数:

function getParameterByName(url, name) {
    console.log(url)
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(url);
    return results ? decodeURIComponent(results[1].replace(/\+/g, " ")) : "";
}
最后,如果
ccid
符合您的要求,请将您的代码更改为仅执行此答案中最初指定的操作(注意删除
最近('a')
,因为我们现在只查看
a
元素):

下面是一个活生生的例子

$(“#ctl00_centerContent_gridview 1 tr td a”)。每个(函数(){
var url=$(this.attr(“href”);
var cid=getParameterByName(url,'ccid');
如果(cid==“542”| cid==“587”){
$(本)
.attr('href','javascript:void(0)'
.css({颜色:'black',光标:'default'});
}
});
函数getParameterByName(url,名称){
console.log(url)
name=name.replace(/[\[]/,“\\[”)。replace(/[\]]/,“\\]”);
var regex=new RegExp(“[\\?&]”+name+“=([^&\]*)”,
结果=regex.exec(url);
返回结果?decodeURIComponent(结果[1]。替换(/\+/g,“”):“”;
}

Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
Y
阿斯大街908号
N
N
Y
电子的
090-093-2311

您可以使用
.attr
设置属性(也不需要两次调用
.css
):


您的代码需要进行一些更改才能完成所需的操作,因为当前它在当前页面的url中查找
ccid
变量,而不是
href
属性中的url

首先,将
每个
更改为只查看
a
元素:

$("#ctl00_centerContent_GridView1 tr td a").each(function() {
----------------------------------------^ here
$("#ctl00_centerContent_GridView1 tr td a").each(function() {
    var url = $(this).attr("href");
    var cid = getParameterByName(url, 'ccid');
    if (cid == "542" || cid == "587"){
        $(this)
            .attr('href','javascript:void(0)')
            .css({color:'black',cursor:'default'});
    }
});
接下来,更改
getParameterByName
以获取url和要查找的参数:

function getParameterByName(url, name) {
    console.log(url)
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(url);
    return results ? decodeURIComponent(results[1].replace(/\+/g, " ")) : "";
}
最后,如果
ccid
符合您的要求,请将您的代码更改为仅执行此答案中最初指定的操作(注意删除
最近('a')
,因为我们现在只查看
a
元素):

下面是一个活生生的例子

$(“#ctl00_centerContent_gridview 1 tr td a”)。每个(函数(){
var url=$(this.attr(“href”);
var cid=getParameterByName(url,'ccid');
如果(cid==“542”| cid==“587”){
$(本)
.attr('href','javascript:void(0)'
.css({颜色:'black',光标:'default'});
}
});
函数getParameterByName(url,名称){
console.log(url)
name=name.replace(/[\[]/,“\\[”)。replace(/[\]]/,“\\]”);
var regex=new RegExp(“[\\?&]”+name+“=([^&\]*)”,
结果=regex.exec(url);
返回结果?decodeURIComponent(结果[1]。替换(/\+/g,“”):“”;
}

Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
Y
阿斯大街908号
N
N
Y
电子的
090-093-2311
让我们分步走

迭代应该在
a
元素之上,因为您并没有任何不相关的锚,所以好的选择器应该是

#ctl00_centerContent_GridView1 tr td a
要提取
ccid
的值,类似的方法应该可以工作:

var ccidValue = getParameterByName($(this).attr("href"), "ccid");
确保更新
getParameterByName
以接受url参数,而不是始终使用当前页面url:

function getParameterByName(url, name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(url);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
然后检查值是否为“542”或“587”,并更换:

if (ccidValue === "542" || ccidValue === "587") {
    $(this).attr("href", "javascript:void(0);")
}
如果您希望应用某些样式,我建议您定义一个类并使用它,而不是使用一些内联脚本:

disabledCardLink {cursor: default; color: black;}

$(this).addClass("disabledCardLink");
我们分步走吧

迭代应该在
a
元素之上,因为您并没有任何不相关的锚,所以好的选择器应该是

#ctl00_centerContent_GridView1 tr td a
要提取
ccid
的值,类似的方法应该可以工作:

var ccidValue = getParameterByName($(this).attr("href"), "ccid");
确保更新
getParameterByName
以接受url参数,而不是始终使用当前页面url:

function getParameterByName(url, name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(url);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
然后检查值是否为“542”或“587”,并更换:

if (ccidValue === "542" || ccidValue === "587") {
    $(this).attr("href", "javascript:void(0);")
}
如果您希望应用某些样式,我建议您定义一个类并使用它,而不是使用一些内联脚本:

disabledCardLink {cursor: default; color: black;}

$(this).addClass("disabledCardLink");
试试这个:

$(function(){
    $('a[href*="ccid=542"]', 'a[href*="ccid=587"]').each(function(){
        DisableLink($(this));
    });
});

function DisableLink(elem){
    elem.parent().html('<a href="javascript:void(0);" style="color: #000;cursor: default;">' + elem.text() + '</a>');
}
$(函数(){
$('a[href*=”