.js、css 或 html - 如何将对象更改为两种不同的颜色?
Posted
技术标签:
【中文标题】.js、css 或 html - 如何将对象更改为两种不同的颜色?【英文标题】:.js, css or html - how change object to two different colors? 【发布时间】:2018-01-26 08:17:06 【问题描述】:我在实验中问参与者是/否问题,他们通过按键 (Y/N) 回答。现在,我想显示 YES 绿色和 NO 红色。
我正在使用 Ibex 农场执行此操作,您有一个 .js 格式的实验文件。在这个文件中,定义了“问题控制器”如下:
"Question",
as: [["Y","Yes"],["N","No"]], //defines keys+answer displays
在此行中添加 html 标记 <font-size>, <div style>
不起作用。
除此之外,还有一个 .css 文件,我可以在其中更改两个答案的颜色,但为两者赋予相同的颜色:
span.Question-fake-link
color: #ff6600; //changing this to red; both Yes and No are red now
cursor: pointer;
第三个文件是 Question.js 文件,它定义问题控制器的行为和属性,超出其外观。我想在这里发帖太长了,而且我没有作者身份。但在那里,答案被定义为“左评论”和“右评论”。所以我尝试在(我希望的)相关位置添加第 4 行:
var lcd = $(document.createElement("li"))
.addClass(this.cssPrefix + "scale-comment-box")
.append(this.leftComment);
.document.getElementById("leftComment").style.color = "red"; //added this, made experiment dysfunctional
this.xl.append(lcd);
有人知道如何单独更改颜色吗?
对不起,我知道这看起来一定很复杂,但也许有人可以指点我该怎么做...如果您需要更多脚本,请告诉我。
非常感谢。
编辑:在这里尝试了一些建议后,我发现答案不知何故为“span.fake-link”。也许这段代码 sn-p 可以提供帮助(第 1/2 行):
var a = $(document.createElement("span")).addClass(this.cssPrefix + "fake-link");
__Question_answers__[i] = ans;
__Question_callback__ = function (i)
var answerTime = new Date().getTime();
var ans = __Question_answers__[i];
var correct = "NULL";
if (! (t.hasCorrect === false)) ...
但是如何替换“span”或“fake-link”?我想我必须同时更换两者。删除 CSS 文件中的 span.fake-link 属性似乎没有帮助。
编辑:或者这可能是问题所在?
if ((this.presentAsScale || this.presentHorizontally) && this.leftComment)
var lcd = $(document.createElement("li"))
.addClass(this.cssPrefix + "scale-comment-box")
.append(this.leftComment)
.appendTo(this.xl)
this.xl.append(lcd);
我试图将“scale-comment-box”替换为“red”(之前在 css 中定义为一个类),但这也无济于事。
【问题讨论】:
这是功能失调的,因为您在 append(this.leftComment); 末尾有一个分号; 为什么要用jquery和mixin js??我不清楚你的整体结构。 @Nawed Khan:好的,现在实验成功了,但它没有改变任何东西。 @Jonas w:我没有制作文件,我只是修改它们并编写我的最终实验文件。例如,如果你想设计一个在线阅读实验,它们就可以这样使用。我花了一点时间自己弄清楚结构。 @jira 这段代码写得不太好(或者至少是 sn-ps ypuve 提供的),你确定要搞砸这个吗? 【参考方案1】:既然您已经在使用 javascript,是否可以添加两个额外的 css 类? 一个可以是 .red,另一个是 .green,然后在创建时将这些类相应地附加到元素:
//CSS
.red
color:#F00;
.green
color:#0F0;
//javascript
//Your javascript seems to be a mix of jQuery and JS so I assume jQuery is imported. If this is incorrect, you would need to use a raw javascript solution
//Hint: Look at document.getElementsByClassName and .classname += "red"
//jQuery version:
$("li").addClass("red") //for any items that need to be red. replace red with green for the green items
【讨论】:
是的,我相信是的。 非常感谢!我在 .css 文件中添加了新定义的类,并将$("li)...
添加到 Question.js 文件中定义 leftComment, rightComment
的位置。它没有任何改变:if ((this.presentAsScale || this.presentHorizontally) && this.leftComment) var lcd = $(document.createElement("li")) .addClass(this.cssPrefix + "scale-comment-box") .addClass("red") //your suggestion .append(this.leftComment) this.xl.append(lcd);
可能是我的错误......
因为你已经有了一个 addClass 函数,把它改成 .addClass(this.cssPrefix+"scale-comment-box red") 并去掉 .addClass("red") 行.
嗯。我一定还是错过了什么。现在我也将span.fake-link
初始更改为绿色并添加了新更改,一切都恢复为蓝色。我看不到这是在哪里定义的。我怀疑您建议的更改在某处被覆盖,但我不知道在哪里,已经几个小时了。还是说改变它们是不可能的,因为它们被定义为不祥的“假链接”?
在您的浏览器中按 F12 并检查您尝试着色的特定元素以确定应用了哪些类。您还可以在这些工具中对 CSS 进行一些测试更改,看看最终是什么使它起作用。那时,更容易确定项目中需要更改代码的位置。您还应该尝试 Jonas w 的解决方案,看看是否能达到您想要的效果【参考方案2】:
你可能会使用 jquerys css 函数:
$("<li>")
.addClass(this.cssPrefix + "scale-comment-box")
.css(color:"red")
.append(this.leftComment)
.appendTo(this.xl);
【讨论】:
谢谢!我对 Javascript 很陌生,所以我不确定我是否正确。我试图将您的代码添加到 .js 脚本中,所以:var lcd = $(document.createElement("li")), ..., .append(this.leftComment); [YOUR CODE]; this.xl.append(lcd);
这并没有改变任何颜色,而是将 NO 移到下一行。将您的代码放在 this.xl.append(lcd);
没有任何改变。我想我在某个地方出错了。
@jira 如果真的需要变量 lcd (别处),可以在上面代码的第一行前加上 var lcd =
谢谢!不幸的是,它仍然没有改变任何东西。
我编辑了我的原始帖子,在底部添加了一些信息。以上是关于.js、css 或 html - 如何将对象更改为两种不同的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
将 django 模板更改为具有 bootstrap 或 css 或两者的 PDF 的方法
Vue.js:如何将特定对象中的布尔字段从 false 更改为 true @click 处于突变状态和带有动作 axios 的服务器?
apache config 中的 rewriterule 或别名,用于将文件夹更改为根目录