3

我在 SharePoint 页面上有一系列链接,我正在尝试修改其中一个常见的 URL 参数。所有链接看起来都与此类似:

<a href="javascript:" onclick="javascript:RefreshPageTo(event, '/dev/Pages/stPCT.aspx?Paged=TRUE&amp;p_ID=357\u0026PageFirstRow=31\u0026FilterField1=Number&amp;FilterValue1=0000123450&amp;&amp;\u0026View={FC071FA0-12AA-7854-905E-0C4429FFFD52}&amp;thisID=STRINGID');javascript:return false;" id="PagingLink" class="PagingLink"> Next</a>

我想要发生的是重写链接以将“thisID = STRINGID”更改为“thisID = 0000123450”......到目前为止,我已经尝试(没有成功)以下。

$(".PagingLink").each( function(index,element) {
    url = $(element).onclick();
    console.log(url);
    newurl = url.replace(/STRINGID/gi,"0000123450");
    $(element).attr('href', newurl);                                                               
});

任何和所有的帮助将不胜感激。

4

4 回答 4

4

我会这样做:

 $(".PagingLink").each( function(index,element) {
        url = $(element).attr('onclick');
        console.log(url);
        newurl = url.replace(/STRINGID/gi,"0000123450");
        $(element).attr('href',newurl);                                                               
    });

您的错误在.onclick中,您应该使用attr()获取它,因为它保证您获得正确的值。

于 2012-09-04T20:08:20.893 回答
1

您当前的 jQuery 代码可能会遇到 JavaScript 错误,因为没有调用onclick(). 您可以使用如下attr()方法访问 onclick 值:

url = $(element).attr('onclick');

您的其余代码应该正确执行。

于 2012-09-04T20:08:25.313 回答
0
        $(".PagingLink").each( function(index,element) {
        url = $(element).onclick();
        console.log(url);
        newurl = url.replace(/STRINGID/gi,"0000123450");
        $(element).attr('href', newurl);                                                               
    });

检查这个

            $(".PagingLink").each( function(index,element) {
            $(element).attr('href').replace(/STRINGID/gi,"0000123450");                                                              
    });

.attr("value").replace('0', 'Day')

于 2012-09-04T20:15:09.697 回答
0

您需要更改 onclick 属性中的文本,而不是 href 属性。看到这个小提琴:http: //jsfiddle.net/fQEdV/2/

更改 href 不会决定页面的去向,因为 Sharepoint 使用 javascript 在链接的单击事件中重定向用户。如果用户禁用了 javascript,那么您更新此 url 的脚本无论如何都不会为他们运行。

于 2012-09-04T20:12:53.283 回答