我试图以编程方式修改jQuery中的元素,即 docID 中的数字递增到最大数字。我正在将下载上的一系列图片上的文字替换为查看。如果我在代码的#ctl00_cphMainContent_dlProductList_ct100_ctl00_lnkProofDownload
部分使用docID
而不是$(docID).text(...)
,则会正确替换文本。当我在其位置使用docID
变量时,它无法正常工作。
我在这里做错了什么?
感谢。
var max = 10;
var count = 100;
var s1 = "#ctl00_cphMainContent_dlProductList_ct";
var s2 = "_ctl00_lnkProofDownload";
var docID = "";
for (i = 1; i <= max; i++)
{
docID = s1.concat (count++, s2);
$(document).ready(function() {
$(docID).text(function(i, oldText) {
return oldText === 'Download' ? 'View' : oldText;
});
});
}
这是正在修改的HTML代码。单词Download由View。取代。
<a id="ctl00_cphMainContent_dlProductList_ctl00_ctl00_lnkProofDownload"
href="../../../Controls/StaticDocProof.ashx?qs=op/5WlcUxeg849UT973Mwf0ZnNcMLfe3JYAe7EnJORsdyETYV1vcKaj0ROc2VrN5fXfYjO2MM6BUYXzX2UKmog=="
>Download</a>
答案 0 :(得分:1)
您的代码中看起来有些错误,包括使用1而不是l。如果它应该是100而不是100,那么更像这样的东西会起作用:
jQuery(function () {
var max = 10,
count = 100,
s1 = 'ctl00_cphMainContent_dlProductList_ct',
s2 = '_ctl00_lnkProofDownload',
docID;
for (var i = count; i <= count + max; i++) {
docID = s1 + i + s2;
jQuery('#' + docID).text(function (idx, oldText) {
return oldText === 'Download' ? 'View' : oldText;
});
}
});
在这里小提琴:http://jsfiddle.net/ochguL2d/
否则,请告诉我们是否应该将l00作为不同的答案。
答案 1 :(得分:0)
您的a
元素位于中间(注意两个&#34; els&#34;):
ctl00_ctl00
...但是你的docID
在中间有这个(注意&#34;一个和el&#34;)
ct100_ctl00
修复您的HTML,您的代码按原样运行:http://jsfiddle.net/5c7hwyts/
但是,编写jQuery是一种奇怪的方式。
这是一种不同的方法:
$('a').text(function(i, oldText) {
var num= parseInt(this.id.split('ctl00_cphMainContent_dlProductList_ct')[1]);
if(num>=100 && num<110) {
return oldText === 'Download' ? 'View' : oldText;
}
});
答案 2 :(得分:0)
您尝试在代码中匹配的元素ID不是DOM中的元素ID。
// This is what you want to match
var domID = "#ctl00_cphMainContent_dlProductList_ct100_ctl00_lnkProofDownload"
^ that is an L
// this what your code is trying to match in its first iteration
var docID = "#ctl00_cphMainContent_dlProductList_ct10_ctl00_lnkProofDownload";"
^ that is a 1 (one)
此外,您的代码的max
变量需要是一个两个char数字字符串,前导零从零开始,而不是从10开始的整数。
就个人而言,我只会:
// On DomReady...
$(document).ready(function() {
// loop through all anchors that have "lnkProofDownload" in their ID attribute
$('a[id*="lnkProofDownload"]').each(function() {
// and if the text is set to "Download", change it to "View"
if ($(this).text() == "Download") {
$(this).text("View");
}
});
});