当我点击此按钮时,我想要更改值。当我这样做时,首先它会更改按钮上的文本,但不会显示地图。之后,我重复这个过程,代码工作正常。
function change() {
var elem = document.getElementById("myButton1");
if (elem.value == "Show") elem.value = "Hide";
else elem.value = "Show";
}
function displayMap() {
if (document.getElementById('map').style.display == "none") {
document.getElementById('map').style.display = "block";
initialize();
} else {
document.getElementById('map').style.display = "none";
}
}

#map {
display: none;
}

<input onclick='change(), displayMap()' type='button' value='Show' id='myButton1'></input>
<div id="map" style="width:100%; height:300px;">map</div>
&#13;
答案 0 :(得分:3)
全球分配
document.getElementById('map').style.display = "none";
请尝试以下代码
document.getElementById('map').style.display = "none";// this line is the solution
function change() {
var elem = document.getElementById("myButton1");
if (elem.value == "Show") elem.value = "Hide";
else elem.value = "Show";
}
function displayMap() {
if (document.getElementById('map').style.display === "none") {
document.getElementById('map').style.display = "block";
} else {
document.getElementById('map').style.display = "none";
}
}
#map {
display: none;
}
<input onclick='change(), displayMap()' type='button' value='Show' id='myButton1'></input>
<div id="map" style="width:100%; height:300px;">map</div>
注意:不要忘记拨打从我的代码段中删除的initialize()
功能
答案 1 :(得分:0)
HTMLElement.style
返回内联样式(style
属性中列出的内容)。
您可以像这样使用Window.getComputedStyle()
:
var map = document.getElementById('map'),
btn = document.getElementById("myButton1");
function change() {
if (btn.value == "Show") btn.value = "Hide";
else btn.value = "Show";
}
function displayMap() {
var style = window.getComputedStyle(map);
if (style.display == "none") {
map.style.display = "block";
initialize();
} else {
map.style.display = "none";
console.log('hiding');
}
}
// Placeholder
function initialize() {
console.log('showing map');
}
#map {
display: none;
width: 100%;
height: 300px;
background:#333;
}
<input onclick='change(), displayMap()' type='button' value='Show' id='myButton1' />
<div id="map"></div>
上面的方法很好,但是我会采用更一致的方法,比如CSS类,我会首先初始化地图,因为你实现的方式耗尽了initialize()