2017-09-23 33 views
-2

我有一個多行的表。我有行,每個人都有一個特定的類。在最後一行,我有一個鏈接。我怎樣才能替換鏈接中他們的名字每個td文本? 我寫了下面的代碼,但它將文本設置在我的鏈接末尾。 這裏是我的代碼片段:如何替換文本的tds而不是href

你重新聲明變量的路線,會不會是你的情況有幫助的,而不是初始化2個瓦爾ROUTE1和路徑2:

$(".list").each(function(index, element) { 
 
var route=$(this).closest("tr").find(".route").text() 
 
var airline=$(this).closest("tr").find(".airline").text() 
 
var route=$(this).closest("tr").find(".route").text() 
 
var linkk=$(this).attr("href") 
 
$(this).attr("href",linkk+route+airline+route); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table border="1"> 
 
<tr> 
 
<td class="route">tehran-istanbul</td> 
 
<td class="airline">Iran air</td> 
 
<td class="route">Ss 454</td> 
 
<td><p class="date1">1398-5-12</p><p class="date2">(2017-08-23)</p></td> 
 
<td><a href="page2.bc?route=&airline=&route=&date1=&date2=" class="list">link</a></td> 
 
</tr> 
 

 
<tr> 
 
<td class="route">tehran-Ankara</td> 
 
<td class="airline">Tukish airline</td> 
 
<td class="route">7547</td> 
 
<td><p class="date1">1395-5-12</p><p class="date2">(2018-01-01)</p></td> 
 
<td><a href="page2.bc?route=&airline=&route=&date1=&date2=" class="list">link</a></td> 
 
</tr> 
 
</table>

+0

你的問題我也不清楚,什麼是預期的結果? – Dij

+0

只是告訴我們預期的結果 – Farsay

+0

我想添加每個td的文本。在href值的名字前面。例如:a href =「page2.bc?airline = airlineoftd&route = routeoftd」 – aynaz

回答

1

與您的代碼的幾個問題。 linkk+route+airline+route不會給你需要的字符串,你需要添加額外的字符串,如'route ='來標識之間的參數。 $(this).parents("tr").find(".route")會給你多個類路由的元素,你需要針對特定​​的元素,你可以在你的情況下使用first()和last()。

$(".list").each(function(index, element) { 
 
var route1= "route=" + $(this).parents("tr").find(".route").first().text(); 
 
var airline= "airline=" + $(this).parents("tr").find(".airline").first().text(); 
 
var route2= "route=" + $(this).parents("tr").find(".route").last().text(); 
 
    var date1 = "date1=" + $(this).parents("tr").find(".date1").first().text(); 
 
    var date2 = "date2=" + $(this).parents("tr").find(".date2").first().text(); 
 
var link = $(this).attr("href").replace(/\?.*/g, "?") + route1 + "&" + airline + "&" + route2 + "&" + date1 + "&" + date2; 
 
$(this).attr("href", link); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table border="1"> 
 
<tr> 
 
<td class="route">tehran-istanbul</td> 
 
<td class="airline">Iran air</td> 
 
<td class="route">Ss 454</td> 
 
<td><p class="date1">1398-5-12</p><p class="date2">(2017-08-23)</p></td> 
 
<td><a href="page2.bc?route=&airline=&route=&date1=&date2=" class="list">link</a></td> 
 
</tr> 
 

 
<tr> 
 
<td class="route">tehran-Ankara</td> 
 
<td class="airline">Tukish airline</td> 
 
<td class="route">7547</td> 
 
<td><p class="date1">1395-5-12</p><p class="date2">(2018-01-01)</p></td> 
 
<td><a href="page2.bc?route=&airline=&route=&date1=&date2=" class="list">link</a></td> 
 
</tr> 
 
</table>

+0

如何添加date1和date2。有沒有辦法做到這一點 ? – aynaz

+0

非常感謝! – aynaz

1

到@DiJ類似我稍微改變了你的論據之一(第二routerouteno)的名稱。然後,我基本上試圖將代碼減少到最低限度,同時簡化代碼。

$(".list").each(function(index, element) { 
 
['route','airline','routeno'].forEach(function(i,o){console.log(i)}); 
 
$(this).closest("tr").find("td").each((i,o)=>{ 
 
    if (vars.indexOf(o.className)>-1) 
 
    this.href+=o.className+'='+encodeURIComponent(o.innerHTML)+'&';  
 
}); 
 
this.href+='date1=&date2='; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<table border="1"> 
 
<tr> 
 
<td class="route">tehran-istanbul</td> 
 
<td class="airline">Iran air</td> 
 
<td class="routeno">Ss 454</td> 
 
<td><p class="date1">1398-5-12</p><p class="date2">(2017-08-23)</p></td> 
 
<td><a href="page2.bc?" class="list">link</a></td> 
 
</tr> 
 

 
<tr> 
 
<td class="route">tehran-Ankara</td> 
 
<td class="airline">Tukish airline</td> 
 
<td class="routeno">7547</td> 
 
<td><p class="date1">1395-5-12</p><p class="date2">(2018-01-01)</p></td> 
 
<td><a href="page2.bc?" class="list">link</a></td> 
 
</tr> 
 
</table>

你可以做同樣的也沒有indexOf()測試,像

$(".list").each(function(index, lnk) { 
var $tr=$(lnk).closest("tr"); 
['route','airline','routeno'].forEach(function(col,i){ 
    lnk.href+=encodeURIComponent($tr.find("td."+col).text())+'&'; }); 
lnk.href+='date1=&date2='; 
}); 
相關問題