Javascript 按类名动态更改css样式 构建1完成 构建2未完成 //大约6或7个以上版本。。。
我需要访问build的样式#以更改显示…所有内容最初都是隐藏的,但我有一个创建字符串/s的java代码(例如“build2”和“build3”)。 我在JAVA代码中将该字符串保存为“tempKey” 然后在javascript脚本中:Javascript 按类名动态更改css样式 构建1完成 构建2未完成 //大约6或7个以上版本。。。,javascript,dom,classname,Javascript,Dom,Classname,我需要访问build的样式#以更改显示…所有内容最初都是隐藏的,但我有一个创建字符串/s的java代码(例如“build2”和“build3”)。 我在JAVA代码中将该字符串保存为“tempKey” 然后在javascript脚本中: <p class="typeA build1"> Build 1 <div class="b">Complete</div></p> <p class="typeA build2"> Build 2 &
<p class="typeA build1"> Build 1 <div class="b">Complete</div></p>
<p class="typeA build2"> Build 2 <div class="b">Incomplete</div></p>
//about 6 or 7 more builds...
var tempKey=“”;
document.getElementsByClassName(tempKey).style.display=“block!important”;
我还尝试添加了一个“active”类,并使该类具有相同的样式(block!important),以及许多不同的方法来解决这个问题。似乎我无法在javascript函数中使用java字符串正确访问元素
编辑:
我正在访问正确的元素,但它不允许我将显示样式从无覆盖到块。不知为什么!重要信息是不工作…
GetElementsByCassName()
生成一个项目数组。您需要索引到它:
var element=document.getElementsByClassName('build1')[0];
console.log(element.style);
element.style.display=“块”;
console.log(element.style)代码>
.typeA{display:none;}
构建1完成
生成2未完成
请记住,选择器返回一个数组,因此您需要提供索引[0]
var i=3;
var tempKey=“构建”+i;
var el=document.getElementsByClassName(tempKey)[0];
el.style.backgroundColor=“#FFCC00”代码>
ul.type-list{
列表样式类型:无;
填充:0;
}
ul.type-list li.typeA{
边框底部:2个实心#99AACC;
}
ul类型列表li span.b{
显示:内联块;
宽度:100px;
浮动:对;
}
- 构建1
完成
建筑2
残缺的
建筑3
建筑3
建筑4
建筑4
当你说Java时,你是指JavaScript吗?不,它是用Java写的。您是否使用了某种模板框架?您是否在浏览器中查看了生成的HTML DOM并检查了样式是否已应用?我们会知道这是CSS问题还是JS问题。因此,在我的代码中,假设在上面的示例中,类typeA的样式显示为“none”。我正在尝试将“build2”的样式显示设置为“block”以覆盖它。这仍然不起作用。在浏览器中查看生成的HTMLDOM,发现我试图更改显示,但被划掉/不活动,并显示typeA想要“无”。将java字符串转换为javascript变量是否正确?var tempKey=”“@kb_389;:查看我的更新。不,如果字符串恰好有双引号字符(“
),那么您刚才发布的将java字符串转换为javascript变量的代码将中断我建议您使用某种类型的JSON转换器库。var tempKey=;
我将尝试更改。对于您的其他建议:我的原始tempKey是从外部JSON提取的值。。为什么我要将其转换回JSON?@kb_908;:大概tempKey是Java字符串,对吗?的正确JSON表示形式“当JSON序列化时,说“你好”
“说“你好”
,这正是您希望在渲染输出中显示的内容。
var tempKey = "<%=tempKey%>";
document.getElementsByClassName(tempKey).style.display = "block !important";