2016-06-02 3 views
0

Я использую некоторый код для создания функционального форматирования. Я огромный noob, когда дело доходит до кода, но я пытался быть логичным в этом и учиться у других, а также через онлайн-учебники.Javascript для условного форматирования останавливается после первой итерации

Я работал над приведенным ниже кодом, который читает столбец RISK в таблице и должен проходить через инструкции IF.

<div id="[@field:Risk]"></div> 

<script> 
    var line_id = '[@field:Risk]'; 
    var line=document.getElementById(line_id).parentNode.parentNode; 
    var elems = line.getElementsByTagName("td"); 

    for (var i = 0, m = elems.length; i < m; i++) { 
     if (elems[i].innerHTML == "Low") { elems[i].style.color="ForestGreen";} 
     if (elems[i].innerHTML == "Low") { elems[i].style.fontWeight = "600";} 
     if (elems[i].innerHTML == "Mid") { elems[i].style.color="DarkOrange";} 
     if (elems[i].innerHTML == "Mid") { elems[i].style.fontWeight = "600";} 
     if (elems[i].innerHTML == "High") { elems[i].style.color = "Red";} 
     if (elems[i].innerHTML == "High") { elems[i].style.fontWeight = "600";} 
    } 
</script> 

Однако после того, как он находит первый экземпляр Low, Mid и High ни один из других появлений этих терминов выделен в соответствии с приведенной выше форматирования. Эффект цикла останавливается после нахождения трех определенных членов. Я недоумеваю, почему это может быть так. Может ли кто-нибудь помочь/объяснить, что я делаю неправильно?

+0

Просьба предоставить больше контекста кода. .. – IMTheNachoMan

+0

какой-то ** elems ** посмотрите и как долго? – Craicerjack

+0

Начну с того, что вы выбрали 'console.log (elems [i] .innerHTML)' в вашем цикле и посмотрели, действительно ли ваше предположение о том, что цикл остановлено. – dlsso

ответ

0

Ваш код отлично работает для меня, см демо:http://jsbin.com/capatoyidu/edit?html,console,output

Однако, ваш код может быть уменьшена до следующего:

<div id="[@field:Risk]"></div> 
<SCRIPT LANGUAGE="JavaScript"> 
var line_id='[@field:Risk]'; 
var line=document.getElementById(line_id).parentNode.parentNode; 
var elems = line.getElementsByTagName("td"); 
for (var i=0, m=elems.length; i<m; i++) 
{ 
if (elems[i].innerHTML=="Low") { 
    elems[i].style.color="ForestGreen"; 
    elems[i].style.fontWeight = "600"; 
} else if (elems[i].innerHTML=="Mid") { 
    elems[i].style.color="DarkOrange";    
    elems[i].style.fontWeight = "600"; 
} else if (elems[i].innerHTML=="High") { 
    elems[i].style.color="Red"; 
    elems[i].style.fontWeight = "600"; 
} 
} 
</SCRIPT> 
+0

Я обновил приложение, которое я делал, это работает, но останавливается после первых трех экземпляров. Спасибо! – lilunique1

+0

вам нужно предоставить полный вывод html для ваших тегов , чтобы мы могли видеть, что не так. –

+0

Я не совсем уверен, что вы имеете в виду. Вы имеете в виду полный html-код для страницы? – lilunique1

0

Можете ли вы попробовать?

<div id="[@field:Risk]"></div> 
<SCRIPT LANGUAGE="JavaScript"> 
var line_id='[@field:Risk]'; 
var line=document.getElementById(line_id).parentNode.parentNode; 
var elems = line.getElementsByTagName("td"); 
var colors = { 
    Low: "ForestGreen", 
    Mid: "DarkOrange", 
    High: "Red", 
} 

for (var i=0, m=elems.length; i<m; i++) { 
    if (colors[elems[i].innerHTML]) { 
    elems[i].style.fontWeight = 600; 
    elems[i].style.color = colors[elems[i].innerHTML] 
    } else { 
    console.warn("Unknow value of " + elems[i].innerHTML + " for index " + i) 
    } 
}</SCRIPT> 
+0

Это не работает вообще, не находит первый экземпляр. – lilunique1

+0

OUps my bad, теперь лучше? – Arthur

0
<div id="[@field:Risk]"></div> 
<script type="text/javascript">//use lowercase; LANGUAGE="JavaScript" is deprecated 
var line_id='[@field:Risk]'; 
var line=document.getElementById(line_id).parentNode.parentNode; 
var elems = line.getElementsByTagName("td"); 
for (var i=0, m=elems.length; i<m; i++) { 
if (elems[i].innerHTML=="Low") { 
    elems[i].style.color="ForestGreen"; 
    elems[i].style.fontWeight = "600";} 
//if (elems[i].innerHTML=="Low") { elems[i].style.fontWeight = "600";} 
if (elems[i].innerHTML=="Mid") { 
    elems[i].style.color="DarkOrange"; 
    elems[i].style.fontWeight = "600";} 
//if (elems[i].innerHTML=="Mid") { elems[i].style.fontWeight = "600";} 
if (elems[i].innerHTML=="High") { 
    elems[i].style.color="Red"; 
    elems[i].style.fontWeight = "600";} 
//if (elems[i].innerHTML=="High") { elems[i].style.fontWeight = "600";} 
} 
</script> 
Смежные вопросы