2013-12-09 26 views
0

我几个星期前开始学习JavaScript,并且遇到了问题。我在这里有两个函数,当点击一个按钮时调出菜单。理论上,弹出的菜单应该从左侧带出一个小div元素,并在该div元素中带有6个div元素。主要的div元素有id“pokemonswitch”,当我点击与相关功能的按钮时,它只会提示“pokemonswitch”,其他div元素似乎不希望出现在“pokemonswitch”中。我修改了代码并得到了各种结果。子div元素不会出现在父JavaScript元素创建的JavaScript函数

1:div元素显示在“pokemonswitch作为编程,但我点击另一个按钮,去除后‘pokemonwitch’的div元素,尽管没有在那里的父元素保留在那里

2:该div元素不会出现在内部“pokemonswitch”所有

3:该div元素出现在随机的地方和函数的其余部分不起作用

我的目标是有六调“pokemonswitch”功能div元素里面有什么我错过了导致我的孩子的结构d iv元素如此疯狂?我希望这足以清楚地回答,如果不是,我会很乐意为这个问题添加更多细节。

//MAKE DIV ELEMENT pokemonswitch VISIBLE AND ASSOCIATIVE SLOTS AS WELL 
function pkmnFunction() { 
    var element = document.getElementById('pokemonswitch'); 
    var cancel = document.getElementById('optionsdiv'); 


    element.style.visibility = "visible"; 
    document.getElementById('slot1').style.visibility = "visible"; 
    document.getElementById('slot2').style.visibility = "visible"; 
    document.getElementById('slot3').style.visibility = "visible"; 
    document.getElementById('slot4').style.visibility = "visible"; 
    document.getElementById('slot5').style.visibility = "visible"; 
    document.getElementById('slot6').style.visibility = "visible"; 
    cancel.innerHTML = "<input id='cancelbutton' type='button' value='cancel' onclick='canFunction()' style='position:absolute; top:95px; left:35px;'></input>"; 
    element.innerHTML = "<div id='slot1'></div><div id='slot2'></div><div id='slot3'></div><div id='slot4'></div><div id='slot5'></div><div id='slot6'></div>"; 
} 

//MAKE DIV ELEMENT pokemonswitch HIDDEN AND ASSOCIATED slot ELEMENTS AS WELL    
function canFunction() { 
    var element = document.getElementById('pokemonswitch'); 
    var cancel = document.getElementById('optionsdiv'); 



    document.getElementById('slot1').style.visibility = "hidden"; 
    document.getElementById('slot2').style.visibility = "hidden"; 
    document.getElementById('slot3').style.visibility = "hidden"; 
    document.getElementById('slot4').style.visibility = "hidden"; 
    document.getElementById('slot5').style.visibility = "hidden"; 
    document.getElementById('slot6').style.visibility = "hidden"; 
    element.style.visibility = "hidden" 

    cancel.innerHTML = "<input id='b5' type='button' onclick='setSlots()' value='Check Slot' ></input><input id='b1' type='button' value='Fight!'></input><input id='b2' type='button' onclick='pkmnFunction()' value='Pkmn'></input><input id='b3' type='button' value='Items' onclick='itemFunction()'></input><input id='b4' type='button' value='Run'></input>"; 

} 

////////////ASSOCIATED CSS STYLE CODE////////////////// 

#pokemonswitch { 
    position: absolute; 
    width: 180px; 
    margin - left: -15px; 
    height: 100 % ; 
    border: solid; 
    border - color: black; 
    border - width: 2px; 
    border - radius: 25px; 
    background - color: 0099CC; 
    z - index: 3; 
    visibility: hidden; 
} 

#slot1 { 
    position: absolute; 
    top: 0px; 
    left: -10px; 
    padding: 5px; 
    text - align: center; 
    border: solid; 
    border - width: 1px; 
    background - color: red; 
    width: 170px; 
    height: 65px; 
    z - index: 4; 

} 


#slot2 { 
    position: absolute; 
    top: 65px; 
    left: -10px; 
    padding: 5px; 
    text - align: center; 
    border: solid; 
    border - width: 1px; 
    background - color: red; 
    width: 170px; 
    height: 65px; 
    z - index: 4; 
    visibility: hidden; 
} 


#slot3 { 
    position: absolute; 
    top: 130px; 
    left: -500px; 
    padding: 5px; 
    text - align: center; 
    border: solid; 
    border - width: 1px; 
    background - color: red; 
    width: 170px; 
    height: 65px; 
    z - index: 4; 
    visibility: hidden; 
} 


#slot4 { 
    position: absolute; 
    top: 195px; 
    left: -500px; 
    padding: 5px; 
    text - align: center; 
    border: solid; 
    border - width: 1px; 
    background - color: red; 
    width: 170px; 
    height: 65px; 
    z - index: 4; 
    visibility: hidden; 
} 


#slot5 { 
    position: absolute; 
    top: 260px; 
    left: -500px; 
    padding: 5px; 
    text - align: center; 
    border: solid; 
    border - width: 1px; 
    background - color: red; 
    width: 170px; 
    height: 65px; 
    z - index: 4; 
    visibility: hidden; 
} 

#slot6 { 
    position: absolute; 
    top: 325px; 
    left: -250px; 
    padding: 5px; 
    text - align: center; 
    border: solid; 
    border - width: 1px; 
    background - color: red; 
    width: 170px; 
    height: 65px; 
    z - index: 4; 
    visibility: hidden; 
} 
+0

你需要JavaScript吗?因为你可以在HTML中编写菜单,并在CSS中给它一个“display:none”。然后你只需要'display:block'来显示它。 – Jurik

+0

你能提供一个jsfiddle吗? - 你的HTML是什么样的? – Wez

回答

0

的问题是,您要参考一个甚至还没有创建的元素。

element.innerHTML = "<div id='slot1'></div><div id='slot2'></div><div id='slot3'></div><div id='slot4'></div><div id='slot5'></div><div id='slot6'></div>";//Place this first 
document.getElementById('slot1').style.visibility = "visible"; 
document.getElementById('slot2').style.visibility = "visible"; 
document.getElementById('slot3').style.visibility = "visible"; 
document.getElementById('slot4').style.visibility = "visible"; 
document.getElementById('slot5').style.visibility = "visible"; 
document.getElementById('slot6').style.visibility = "visible"; 
cancel.innerHTML = "<input id='cancelbutton' type='button' value='cancel' onclick='canFunction()' style='position:absolute; top:95px; left:35px;'></input>"; 

另外一些其他的事情,我注意到了:

而不是使用style.visibility使用style.display的。 <input>不是一个容器元素,所以随处删除</input>

0
document.getElementById('slot1').style.visibility = "visible"; 
element.innerHTML = "<div id='slot1'></div>"; 

这是不对的。第一行表示已存在编号为slot的元素。第二行添加一个具有相同ID的新div。

如果元素应该已经存在,您可以添加现有元素

var slot1 = document.getElementById('slot1'); 
slot1.style.visibility = "visible"; 
element.appendChild(slot); 

如果没有,你可以先创建一个:

var slot1 = document.createElement('div'); 
slot1.id = 'slot1'; 
slot1.style.visibility = "visible"; 
element.appendChild(slot); 
0

我做这种方式!创建一个包含所需表单的div,并使该div显示:无。然后点击使其可见,你要

<div style="display:none"> 
<div id="mycontent"> 
content content 
</div> 
</div> 

然后使用 的document.getElementById(“ID”)..的style.display =“值”