我有一个加载以下对象的页面:
var fields = {"age":"on","email":"useremail@gmail.com","firstname":"John","lastname":"Smith","officialrules":"on","question":"a"};
每个属性的值都是动态的,并根据用户在上一页上输入的内容而更改。
最后一个属性问题可以具有 a 或 b 或 c 的值。< / p>
在我的页面HTML中,有三个隐藏的div(每个包含一个显示样式:none)。
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
使用Javascript或jQuery,如何根据问题属性中的值显示特定div?
换句话说,所有三个div都设置为默认显示为none。
当我在浏览器的控制台中玩游戏时,当我放下以下代码行时,我能够实现我想要的行为:
if (fields.question == 'a') {document.getElementById('div1').style.display='block';}
但是如何创建一个可以自动运行所有三种方案的脚本?非常感谢你。
答案 0 :(得分:1)
在jQuery中这很简单:
$( function() {
if (fields.question == 'a') $( '#div1' ).show();
if (fields.question == 'b') $( '#div2' ).show();
if (fields.question == 'c') $( '#div3' ).show();
});
您可以在var fields
声明后添加此内容。
请注意$( function() {
表示在DOM准备好后将执行代码
答案 1 :(得分:1)
将div重命名为diva,divb,divc等,并执行
var id = 'div' + fields.question;
var div = document.getElementById(id);
if( div ) div.style.display = 'block';
由于您可以在不更新代码的情况下添加其他div,因此可以进行更多扩展。
答案 2 :(得分:0)
我会重命名潜水diva
divb
和divc
,然后尝试:
document.getElementById('div'+fields.question).style.display='block';
答案 3 :(得分:0)
如果有三个固定值,您可以将div的id设置为它们所代表的问题的相同值,并使用jquery显示div。喜欢: $( “DIV#DIV” + fields.question).show();
答案 4 :(得分:0)
我认为我这样做的方法是将div与可能的值联系起来。您可以使用id
或class
值执行此操作。使用class
值可以根据question
值(如果需要)显示多个元素,因此我个人会走这条路线,以实现灵活性。 / p>
这样的事情可以满足您的需求:
<强> HTML 强>
<div id="div1" class="a"></div>
<div id="div2" class="b"></div>
<div id="div3" class="c"></div>
<强> JS 强>
document.getElementsByClassName(fields.question).style.display='block';
答案 5 :(得分:0)
这怎么办..
var showDiv = function (hideID, showID) {
$("#" + hideID).hide();
$("#" + showID).show();
}
要更改Div时调用该函数。