如何基于前三个字符设置元素样式
How to style elements based on first three characters?
我正在为我的朋友编写一个简洁的日历功能。他有一个表,他希望弹出一个事件列表,该列表对应于所单击的日期(或单元格)。例如,如果他在每月的第三天单击标记为3的单元格,则会弹出一些内容,列出当天的事件。
我已经走得很远了。这是我的javascript:
function calendar() {
var items = calendar.arguments.length;
for(i = 0;i < items; i++){
document.getElementById('popupdiv').innerHTML += "<li>"+calendar.arguments[i]+"</li>";
}
document.getElementById('popup').style.display="block";
document.getElementById('hide').style.display="block";
}
这确实有效。当函数calendar()
被调用时,参数/参数将成为事件,它们将被列为<li>
s。
无论如何,我想有某种方式让他用红色字体标记更重要的事件。我正在考虑通过检索每个参数的前三个字母来实现这一点,如果它们等于字符串"red",则将文本变为红色(并删除参数的这一部分,以便它不会显示在实际的弹出窗口中)。
有更简单的方法吗?
您的活动需要更多的信息。除了事件名称之外,还可以添加一个类选项。传递一组事件项,可能像这样:
var items = [
{ 'name': 'Birthday party', 'class': 'fun' },
{ 'name': 'Midterm', 'class': 'important' }
];
function calendar(items)
{
var newItemsHtml = '';
for (var i=0, j=items.length; i<j; i++)
{
newItemsHtml += '<li class="'+items[i].class+'">'+items[i].name+'</li>';
}
var targetList = document.getElementById('popupListNotADivTheyDoNotHaveListItems');
targetList.innerHTML += newItemsHTML;
document.getElementById('popup').style.display = 'block';
document.getElementById('hide').style.display = 'block';
// Better in jQuery:
$('#popuplist').append(newItemsHtml);
$('#popup').show();
$('#hide').show();
}
但是,这需要数组知识。要完全按照您的要求去做,请尝试这样做:
function calendar(){
var items = calendar.arguments;
for (item in items){
var class = (item.substring(0,3) === 'red') ? ' class="red"' : '';
var target = document.getElementById('popupdiv');
target.innerHTML += '<li'+class+'>'+item+'</li>';
}
document.getElementById('popup').style.display = 'block';
document.getElementById('hide').style.display = 'block';
}
去掉项目名称中的"red":
function calendar(){
var items = calendar.arguments;
for (item in items){
var class = '';
if (item.substring(0,3) === 'red'){
class = ' class="red"';
item = item.substring(3);
}
var target = document.getElementById('popupdiv');
target.innerHTML += '<li'+class+'>'+item+'</li>';
}
document.getElementById('popup').style.display = 'block';
document.getElementById('hide').style.display = 'block';
}
定义一个CSS类
li.red
{
color:red;
}
or
li.red{color:#ff0000;}
li.red{color:rgb(255,0,0);}
然后在你的javascript代码
for(i = 0;i < items; i++){
document.getElementById('popupdiv').innerHTML += '<li class="'+(i<3?'red':'')+'">'+calendar.arguments[i]+'</li>';
}
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何使用PHP和JS级联三个下拉列表
- 灯光问题(使用三个.js)
- 在三个.js中创建球体(例如地球)的磁力线
- 如何替换javascript字符串中的前三个连字符
- 如何防止用户删除文本输入中的前三个字符
- 文本框事件中的第三个字符
- 如何使用正则表达式检查三个字符长度
- /(S)1(1)+/g 匹配三个相等的非空格字符紧随其后的所有匹配项
- 如何从字符串中剪切第三个符号,并在没有第三个字符的情况下提醒它
- 每隔三个数字字符添加一个逗号
- 如何在JavaScript中的表单中每三个字符添加一个空格并具有替换函数
- 如何在bootstrap中搜索三个字符后的打字头
- javascript中的三个字符月和文化匹配
- 正则表达式检查前三个字符的数字是不工作的字母
- 如何获得字符串的前三个字符
- 限制字符,并且在angular js和ionic中后面有三个点
- 如何基于前三个字符设置元素样式
- 让用户在输入文本字段中只键入三个不同的字符
- 如何在javascript中每三个字符添加一个换行符