JavaScript中prototype為物件新增屬性的誤區介紹_基礎知識
先上需要用到的全部代碼片段(截取)
MenuControl.prototype.boxDisplay = false;//是否顯示圖層選擇選單
MenuControl.prototype.controlUI;
MenuControl.prototype.show = function(){
if(pointControl.boxDisplay){
if(pointControl.boxDisplay){
pointControl.hide();
}
menuBoxDiv.style.display = "";
this.boxDisplay = true;
this.controlUI.style.backgroundColor = '#DDDDDD';
this.controlUI.style.backgroundColor = '#DDDDDD';
this.controlUI.style.backgroundColor = ‘#DDDDDD >};
MenuControl.prototype.hide = function(){
menuBoxDiv.style.display = "none";
this.boxDisplay = false;
this.controlUI.style.backgrounddor = ' white';
};
//圖層選擇開關
function MenuControl(controlDiv, map) {
controlDiv.style.padding = '5px';
var controlUI = document.create ('div');
this.controlUI = controlUI;
controlUI.style.backgroundColor = 'white';
controlUI.style.height = '18px';
controlUI.style. 'solid';
controlUI.style.borderWidth = '1px';
controlUI.style.borderWidth = '1px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
control.controlUI.style.textAlign = 'center';
control.UI.title = '點選啟用選單';
controlDiv.appendChild(controlUI);
var controlText = document.createElement('div');
controlText.style.fontFamilyans = 'Arial,sans -serif';
controlText.style.fontSize = '12px';
controlText.style.paddingLeft = '4px';
controlText.style.paddingRight = '4px';
controlText.inHTML] '圖層選擇';
controlUI.appendChild(controlText);
google.maps.event.addDomListener(controlUI, 'click', function(google) {
if(menuControl.boxDisplay){
menuControl.hide();
}else{
menuControl.show();
}
});
}
}
}
});
}
}
}
});
}
}
}
});
}
}
}
} >//點開關框體
PointControl.prototype.boxDisplay = false;//是否顯示圖層選擇選單
PointControl.prototype.controlUI;
PointControl.prototype.show = function(){
if(menuControl.boxDisplay){
menuControl.hide();
}
pointBoxDiv.style.display = "";
this.boxDisplay = true;
this.control.style .backgroundColor = '#DDDDDD';
};
PointControl.prototype.hide = function(){
pointBoxDiv.style.display = "none";
this.boxDisplay = false;
this.controlUI.style.backgroundColor = 'white';
};
function PointControl(controlDiv, map) {
controlDiv.style.padding = '5px';
var controlUI = document.createElement('div');
this.controlUI = controlUI;
controlUI.style.backgroundColor = 'white';
controlUI.style.height = '18px'; >controlUI.style.borderStyle = 'solid';
controlUI.style.borderWidth = '1px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
controlUI.title = '點選操控點選單';
controlDiv.appendChild(controlUI);
var controlText = document.createElement('div');
trollText. style.fontFamily = 'Arial,sans-serif';
controlText.style.fontSize = '12px';

controlText.style.paddingpadRightdingLeft = '4px';
controlText.style.paddingpadRight = '4px' ;

controlUI.appendChild(controlText);
google.maps.event.addDomListener(controlUI, 'clickcontrolUI, 'click ', function() {
if(pointControl.boxDisplay){
pointControl.hide();
}else{
pointControl.show();
開啟前判斷該子選單是否已為開啟狀態,如是,則先關閉,後開啟
在開關子選單時,按鈕會據相應行為變色
這裡就要求在各個按鈕的show()方法下操作另一按鈕的屬性和方法來達到開關的效果
開始時寫成這樣
その結果、どのメニューを開いても閉じても、「クリック」ボタンだけ色が変わります
原因はおそらくcontrolUIがグローバル変数として不可解に定義されているためです
後ほど私はこれを試しました
MenuControl.prototype.controlUI;
MenuControl.prototype.show = function(){
this.controlUI.style.backgroundColor = '#DDDDDD';//このキーワードを追加します
};
function MenuControl(controlDiv, map) {
controlUI = document.createElement('div' ; >
コードは次のとおりです:
少なくとも、未定義にスタイル属性を追加することはできません。すべての属性にグローバル変数を追加することで呼び出しがより便利になるように準備しました。
それはうまくいきませんでしたが、私は自分自身からインスピレーションを得て、次のことを思いつきました。最初のコード
コードをコピーします
コードは次のとおりです:
MenuControl.prototype。 controlUI;//最初にこのプロパティを確立し、穴を掘ります
MenuControl.prototype.show = function(){
this.controlUI.style.backgroundColor = ' #DDDDDD';//このキーワードを使用して、実際の呼び出しは this.controlUI object
};
function MenuControl(controlDiv, map) {

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

將MySQL查詢結果陣列轉換為物件的方法如下:建立一個空物件陣列。循環結果數組並為每一行建立一個新的物件。使用foreach迴圈將每一行的鍵值對賦給新物件的對應屬性。將新物件加入到物件數組中。關閉資料庫連線。

PHP函數可以透過使用return語句後接物件實例來傳回對象,從而將資料封裝到自訂結構中。語法:functionget_object():object{}。這允許創建具有自訂屬性和方法的對象,並以對象的形式處理資料。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務

在C++中,函數傳回物件需要注意三點:物件的生命週期由呼叫者負責管理,以防止記憶體洩漏。避免懸垂指針,透過動態分配記憶體或返回物件本身來確保物件在函數返回後仍然有效。編譯器可能會最佳化傳回物件的副本生成,以提高效能,但如果物件是值語義傳遞的,則無需副本生成。

Java堆和棧的區別及應用場景解析,需要具體程式碼範例在Java程式中,堆和棧是兩個常用的資料結構,它們在記憶體中承擔不同的角色和功能。了解堆疊和堆疊的差異對於編寫高效的Java程式至關重要。首先,我們來看看Java堆。堆是一個用來儲存物件的區域,所有在程式中被建立的物件都被儲存在堆中。堆是在程式運行時動態分配和釋放記憶體的地方,它不受任何限制,並且可以根據需要自動
