Javascript 使用JQuery动态更新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

页面上有href链接,其文本不完整。例如,页面将链接文本显示为“
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;s
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
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;
}