jQuery更改匹配文本

问题描述:

我想更改文本,其中td值为:"null""Not rating found"!。但它不断改变所有的价值观,而只是改变了所有价值观。jQuery更改匹配文本

$(document).ready(function() { 
$(".form-inline").submit(doStuff); 
}); 

function doStuff(e){ 
e.preventDefault(); 

var input = $("#nanizankaInput").val(); 
var link = "http://api.tvmaze.com/search/shows?q="; 
link = link + input; 

$.ajax({ 
    url: link, 
    method: 'GET', 
    success: function (data) { 
     console.log(data); 

var prazno = $("thead tr td:nth-child(3)").text(); 

    for(var i = 0; i < data.length; i++){ 
    $("thead").first().append("<tr>" + "<td>" + data[i].show.id + "</td>" + "<td>" + data[i].show.name + "</td>" + "<td>" + data[i].show.rating.average + "</td>" +"</tr>"); 

    if ($("thead tr td:nth-child(3)").text("null")) { 
     $("thead tr td:nth-child(3)").text("No rating found!") 
    } 
    } 
}}); 
} 

您必须输入类似"bad"的内容才能看到结果。

现场演示:http://jsbin.com/dupuzonita/edit?html,js,output

+0

'如果($( “THEAD TR TD:第n个孩子(3)”。)文本( “空”)){'你在这里设置文本'null',但要比较:'if($(“thead tr td:nth-​​child(3)”)。text()===“null”){' – empiric

返回true

增加了一个评级类和技巧的工作。检查并尝试下面的代码:

$(document).ready(function() { 
 
$(".form-inline").submit(doStuff); 
 
}); 
 

 
function doStuff(e){ 
 
e.preventDefault(); 
 

 
var input = $("#nanizankaInput").val(); 
 
var link = "http://api.tvmaze.com/search/shows?q="; 
 
link = link + input; 
 

 
$.ajax({ 
 
    url: link, 
 
    method: 'GET', 
 
    success: function (data) { 
 
     console.log(data); 
 

 
var prazno = $("thead tr td:nth-child(3)").text(); 
 

 
    for(var i = 0; i < data.length; i++){ 
 
    \t $("thead").first().append("<tr>" + "<td>" + data[i].show.id + "</td>" + "<td>" + data[i].show.name + "</td>" + "<td class='rating'>" + data[i].show.rating.average + "</td>" +"</tr>"); 
 

 
    } 
 
    $(".rating").each(function(){ 
 
     if($(this).text() == 'null') 
 
      $(this).text('No rating found!'); 
 
    }); 
 
}}); 
 
}

健康检查是错误的

if ($("thead tr td:nth-child(3)").text("null")) { 
     $("thead tr td:nth-child(3)").text("No rating found!") 
} 

你设置值,而不是检查它,以便evertime它$(selector).text("null")

if ($("thead tr td:nth-child(3)").text() === "null") { 
     $("thead tr td:nth-child(3)").text("No rating found!") 
} 

只需更换到

if (!$("thead tr td:nth-child(3)").text()) 

除了文字错误,你是通过行循环,但只检查第一排第三个TD。

您需要更改下面的代码。

$(document).ready(function() { 
$(".form-inline").submit(doStuff); 
}); 

function doStuff(e){ 
e.preventDefault(); 

var input = $("#nanizankaInput").val(); 
var link = "http://api.tvmaze.com/search/shows?q="; 
link = link + input; 

$.ajax({ 
url: link, 
method: 'GET', 
success: function (data) { 
    console.log(data); 

var prazno = $("thead tr td:nth-child(3)").text(); 

for(var i = 0; i < data.length; i++){ 
$("thead").first().append("<tr>" + "<td>" + data[i].show.id + "</td>" + "<td>" + data[i].show.name + "</td>" + "<td>" + data[i].show.rating.average + "</td>" +"</tr>"); 
var td = $("thead tr").eq(i).find("td:nth-child(3)"); 
if (td.html() === "null") { 
    td.html("No rating found!") 
} 
} 
}}); 
} 

你也可以使用你用于td的nth-child选择器。

$("thead tr:nth-child("+i+") td:nth-child(3)"); 
+0

这似乎正在工作! – Slasher