最初加载页面时,如何根据其值更改文本的颜色?

查尔斯

我正在春季编写程序,其中一个方面是犯罪评级功能。根据用户输入,API查询和一些计算,我得出的评分为10。就像这样(加尔达警察局是爱尔兰的警察局)

在此处输入图片说明

我认为如果数字的颜色发生变化(例如,低分变为绿色,高分变为红色等)会很酷。我正在Spring应用程序中从Controller类打印此信息。我尝试了以下方法:

我向<b>标签添加了ID,以将值传递到javascript变量中,如下所示:

<c:forEach var="o" items="${gardaStationList}">
        <tr>
            <td width="10%" height="50"><h2>Based on <b><c:out value="${o.gardaStation_name}" /></b> and their statistics
                                            the rating for this area is:  <b id = "rating"><c:out value="${o.crime_rating}" /></b></h2></td>  

         </tr>
    </c:forEach>

当页面加载时,我让它运行以下javascript函数,但是我感觉它是在评级加载之前执行此操作的,所以它不起作用?

window.onload = function() {
  var rating = document.getElementById('rating').value;
  if (rating < 4) {
    document.getElementById("rating").style.color = "#45FD00";
  } else if (rating > 4 && rating < 6) {
    document.getElementById("rating").style.color = "#E6E6E6";
  } else if (rating > 6) {
    document.getElementById("rating").style.color = "#ff0000";
  }
}

有没有办法可以在文本加载后运行该函数,或者我做错了吗?

斯科特·马库斯(Scott Marcus)

您走在正确的道路上,但只有表单字段元素具有.value属性。常规元素具有.textContent属性。

而不是b使用span,它更适合于包含一些内联内容。要使样式变粗体,请使用CSS。

接下来,为每个将包含数据的元素提供所需的通用CSS类名称,以将它们分组在一起,而不是id在各个元素上使用unique 这样就很容易将它们全部收集起来,或者以后再添加,而无需更改JavaScript。

另外,使用CSS类而不是创建动态的内联样式,因为类更加灵活并且允许您使用element.classList对象,这使得添加,删除和切换类变得容易。

// When all the HTML has been parsed and is available...
window.addEventListener("DOMContentLoaded", function() {
  // Get all the ratings into an array
  var ratings = Array.prototype.slice.call(document.querySelectorAll('.rating'));
  
  // Loop over the array
  ratings.forEach(function(r){
    // Get the text that is inside the element
    var val = +r.textContent; // The prepended + converts the text to a number

    // Just add the appropriate pre-made CSS class to the element
    // depending on its text content.
    if(val < 4 ){
      r.classList.add("low");
    } else if(val >= 4 && val <= 6){
      r.classList.add("medium");
    } else if(val > 6){
      r.classList.add("high");
    }
  });
});
.rating { font-weight:bold; }
.low { color:#45FD00; }
.medium { color:#880; }
.high { color:#ff0000; }
td { width:10%; height:50px; }
<table>
   <tr>
     <td><h2>Based on statistics the rating for this area is:  <span class="rating">10.04</span></h2></td>  
   </tr>
   <tr>
     <td><h2>Based on statistics the rating for this area is:  <span class="rating">5.4</span></h2></td>  
   </tr>  
   <tr>
     <td><h2>Based on statistics the rating for this area is:  <span class="rating">0.4</span></h2></td>  
   </tr>    
</table>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据其当前值更改noUiSliders上的颜色?

如何使用CSS根据文本值更改文本的颜色?

如何使用php和html根据值更改文本颜色?

如何根据其结果更改文本标签的颜色?

如何使用 Flutter 根据其结果更改文本颜色?

如何检查跨度内的数字并根据该值更改其颜色?

如何根据值更改<td>元素的颜色

根据其值更改<select>的颜色-仅CSS(?)

如何根据其值更改单元格的格式和文本。(条件格式)

页面加载时如何更改表单输入的背景颜色?

根据Angular 6中的值更改td中文本的颜色

根据文本值更改DIV的颜色(从外部来源)

是否可以根据值更改文本颜色?(反应本机)

根据输入的值更改此输入文本的颜色

HTML-根据JS的值更改文本的颜色

Table Spotlighting - 根据多列的值更改文本颜色

如何根据其值更改R Shiny数据表的单元格的单元格颜色?

根据哈希值更改单击按钮时的颜色

如何根据值更改进度栏颜色

如何根据对象值更改javascript中的颜色

如何根据值更改输入滑块的拇指颜色?

如何根据值更改ant设计进度栏颜色?

如何根据R中列的值更改图形的颜色

在反应中,如何根据值更改范围滑块的颜色?

如何在不重新加载页面的情况下根据 jQuery 中设置的 cookie 值更改元素?

如何使用Angularjs指令基于动态值更改文本颜色?

如何根据其ID:Fullcalendar更改外部元素放置时的背景颜色?

如何根据php条件更改文本颜色

如何根据主题更改TextFormField的文本颜色