Javascript 使用JQuery动态更新href文本值
页面上有href链接,其文本不完整。例如,页面将链接文本显示为“Javascript 使用JQuery动态更新href文本值,javascript,jquery,Javascript,Jquery,页面上有href链接,其文本不完整。例如,页面将链接文本显示为“link1”,但正确的文本应类似于“link1-Module33”。页面和实际文本都以相同的文本开头(在本例中,两者都以“link1”开头)。 我从java会话中获取JSON对象的实际文本并进行比较。如果JSON文本以页面文本开头(即JSON文本“link1-Module33”以“link1”(页面文本)开头,则将“link1”更新为“link1-Module33” 页面有下面的代码来显示链接 <div class="disp
link1
”,但正确的文本应类似于“link1-Module33
”。页面和实际文本都以相同的文本开头(在本例中,两者都以“link1
”开头)。
我从java会话中获取JSON对象的实际文本并进行比较。如果JSON文本以页面文本开头(即JSON文本“link1-Module33
”以“link1
”(页面文本)开头,则将“link1
”更新为“link1-Module33
”
页面有下面的代码来显示链接
<div class="display_links">
<ul id="accounts_links_container">
<li id="accounts_mb_2_id"><a href="javascript:void(0)" class="linksmall"
id="accounts_mb_2_a"> link1 </a></li>
<li id="accounts_mb_11_id"><a href="javascript:void(0)" class="linksmall"
id="accounts_mb_11_a"> link2 </a></li>
.
.
.
// more links
</ul>
</div>
sessionValue有正确的更新文本,pageValue有部分文本。我使用下面的代码进行比较
for(var s=0; s<pageValue.length; s++) {
var pageLen = $.trim(pageValue[s]).length;
for(var w=0; w<sessionValue.length; w++) {
var sesstionLen = $.trim(sessionValue[w]).length;
var newV = sessionValue[w].substring(0, pageLen);
if($.trim(newV)==$.trim(pageValue[s])){
**// UPDATING VALUES AS BELOW**
pageValue[s]=sessionValue[w];
}
}
}
for(var s=0;spageValue[s]=sessionValue[w];
只更新数组;它对li
的文本没有任何影响
如果您想更新li
的文本,您需要在中的每个中进行更新。下面是一个这样做的示例,并采用稍微更有效的方法进行比较:
$('.display_links li a').each(function() {
var $this = $(this);
var text = $.trim($this.text());
var textLen = text.length;
for (var w = 0; w < sessionValue.length; ++w) {
var sessionText = $.trim(sessionValue[w]);
if (sessionText.substring(0, textLen) == text) {
text = sessionText;
$this.text(text);
break; // Found it, so we stop
}
}
pageValue.push(text); // If you want it for something
});
$('.display_links li a')。每个(函数(){
var$this=$(this);
var text=$.trim($this.text());
var textLen=text.length;
对于(var w=0;w
pageValue[s]=sessionValue[w];
只更新数组;它对li
的文本没有任何影响
如果您想更新li
的文本,您需要在中的每个中进行更新。下面是一个这样做的示例,并采用稍微更有效的方法进行比较:
$('.display_links li a').each(function() {
var $this = $(this);
var text = $.trim($this.text());
var textLen = text.length;
for (var w = 0; w < sessionValue.length; ++w) {
var sessionText = $.trim(sessionValue[w]);
if (sessionText.substring(0, textLen) == text) {
text = sessionText;
$this.text(text);
break; // Found it, so we stop
}
}
pageValue.push(text); // If you want it for something
});
$('.display_links li a')。每个(函数(){
var$this=$(this);
var text=$.trim($this.text());
var textLen=text.length;
对于(var w=0;w
this.text()的$结果是一个基本字符串,不是对元素textNode的引用。更新pageValue
无关紧要,因为它与原始元素无关
您可以留在$.each()
循环中,仍然可以访问更新文本所需的元素,而不是将字符串推送到数组中进行处理。类似于以下内容:
$('.display_links li').each(function() {
var $li = $(this);
var liText = $.trim($li.text());
var liLen = liText.length;
for(var w = 0; w < sessionValue.length; w++) {
var sessionLen = $.trim(sessionValue[w]).length;
var newV = sessionValue[w].substring(0, liLen);
if ($.trim(newV) === liText) {
**// UPDATING VALUES AS BELOW**
$li.text(sessionValue[w]);
}
}
});
$('.display_links li')。每个(函数(){
var$li=$(本);
var liText=$.trim($li.text());
var liLen=liText.length;
for(var w=0;w
this.text()的$结果是一个基本字符串,不是对元素textNode的引用。更新pageValue
无关紧要,因为它与原始元素无关
您可以留在$.each()
循环中,仍然可以访问更新文本所需的元素,而不是将字符串推送到数组中进行处理。类似于以下内容:
$('.display_links li').each(function() {
var $li = $(this);
var liText = $.trim($li.text());
var liLen = liText.length;
for(var w = 0; w < sessionValue.length; w++) {
var sessionLen = $.trim(sessionValue[w]).length;
var newV = sessionValue[w].substring(0, liLen);
if ($.trim(newV) === liText) {
**// UPDATING VALUES AS BELOW**
$li.text(sessionValue[w]);
}
}
});
$('.display_links li')。每个(函数(){
var$li=$(本);
var liText=$.trim($li.text());
var liLen=liText.length;
for(var w=0;w
我认为只需选择您关心的元素(在本例中为锚定标记),然后使用内置功能进行比较,而不是重新实现StartWith函数,这样会更简洁
var sessionValue=['link1-Module33','link2-foobar'];
$('.display_links li a')。每个(函数(){
var$this=$(this);
var text=$this.text().trim();
forEach(函数(sessionValue){
if(sessionValue.startsWith(文本)){
$this.text(sessionValue);
}
});
});
我认为只需选择您关心的元素(在本例中为锚定标记),然后使用内置功能进行比较,而不是重新实现StartWith函数,这样会更简洁
var sessionValue=['link1-Module33','link2-foobar'];
$('.display_links li a')。每个(函数(){
var$this=$(this);
var text=$this.text().trim();
forEach(函数(sessionValue){
if(sessionValue.startsWith(文本)){
$this.text(sessionValue);
}
});
});
我是个笨蛋,我想我会试试这个。
这是我的方法,尽管sessionValue数组对我来说有点模糊。长度是否还未确定
为了获得更好的性能,我在循环之外声明了var,所以它们不会被反复声明
遍历元素,通过比较函数传递每个值,返回正确的值,并在所有cond之后立即更新
var i = 0;
$('.display_links li a').each(function(i) {
$(this).text(Compare($(this).text(), sessionValue[i]));
i++;
});
var Compare;
var update;
Compare = function(val1, val2) {
// Check if val1 does not equal val2 and see if val2 exists(both must be true) then update.
if(!val1 === val2 || val2) {
update = val2
}
return update;
}