Javascript 按类名动态更改css样式 构建1完成 构建2未完成 //大约6或7个以上版本。。。

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 &

我需要访问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 <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";