2013-12-09 85 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 =「值」

相關問題