如何遍历HTML节点以查找匹配并从节点获取下一个innerHTML

时间:2013-07-09 09:10:43

标签: javascript jquery html

我有一个表单元素<select>来选择一个人。一旦元素发生变化 执行函数getPerson()并读出所选条目的值。

<select id="cust_id" name="f_cust_id" onchange="getPerson(this)">
  <option value="51">Brad Pitt</option>
  <option value="123">Angelina Jolie</option>
  <option value="13">Jennifer Aniston</option>
</select>

下一步是:我在同一页面中有一个隐藏文本,我想找到这个值(示例值51)。 我需要通过这个hiddenCustomer节点进行迭代。

隐藏的HTML文字

<div id="hiddenCustomer" style="display:none;">
  <span>51</span><span>Brad;Pitt;Y1;Group1;bpitt@wwz.com;12345</span>
  <span>123</span><span>Angelina;Jolie;Y2;Group2;ajolie@wwz.com;12346</span>
  <span>13</span><span>Jennifer;Aniston;Y1;Group1;ja@wwz.com;12347</span>
</div>

最后,如果我有匹配51 = 51,我从下一个元素中取出字符串并将其“拆分”为一个数组。它将用于填写一些公式字段,如:firstname,lastnamem,floor,group,email ...

我的问题是:如何通过hiddenCustomer节点进行最佳迭代。找到匹配并从中获取innerHTML值 下一个元素(例如:Brad; Pitt; Y1; Group1; bpitt@wwz.com; 12345)

ps:我不想使用JSON对象。

3 个答案:

答案 0 :(得分:2)

你可以这样做

[ DEMO ] --> http://fiddle.jshell.net/ykF6P/

function getPerson(element)
{
    var val = element.value;
    var $span = $('#hiddenCustomer span').filter(function(){
      return $(this).text() == val;
   }).next('span');
}

答案 1 :(得分:1)

你可以这样做:

var value = 51;

var $span = $('#hiddenCustomer span:nth-child(odd)').filter(function(){
    return parseInt($(this).text(),10) == value;
}).next('span');

console.log($span.html());

答案 2 :(得分:1)

function getPerson(element){
    var elementsArray = [];
    $("#hiddenElement").each(function(){
         $(this).find("span").each(function(){            
             if($(this).text() == $(element).val()){
                 elementsArray = $(this).find("span").next().text().split(';');
             }
         });
    });
}

你最终会得到一个字符串数组。