我目前正在構建一個類似PCPartPicker的網站,但用於學校項目的水冷零件。我在努力,我有一些問題。在作爲這個最重要的: 這裏是我的對象構造開始正在調用錯誤屬性的對象
var cpuCollection = [];
var myComputer = [];
function CPU(frequency,cores,socket,name) {
this.name = name;
this.frequency = frequency;
this.cores = cores;
this.socket = socket;
cpuCollection.push(this);
}
var i75930k = new CPU(3.6, 6, 2011.3, "i7 5930k");
var i54690k = new CPU(3.6, 4, 1150, "i5 4960k");`
我建對象的構造我做了使用真實電腦配件的一些測試對象後。
在我的HTML我有下拉使用此代碼由對象填充的菜單上載:
$(cpuCollection).each(function() {
$('#cpusel').append($("<option> " + this.name + "</option>"))
});
從那裏我想讓它這樣,當在下拉列表中正確選擇一個選項對象將被推入myCPU
var中,以便在另一個函數中進行兼容性測試。我曾經做到這一點的代碼如下:
$('#cpusel').change(function() {
myCPU = new CPU();
$(cpuCollection).each(function(){
if(this.name = $('#cpusel :selected').text()) {
myCPU = this;
}
});
});
不幸的是這個代碼目前不工作,並告訴我,myCPU.socket
是1150
當i75930k
被選中時,它真的應該2011.3
。我在這裏結束智慧並想取得一些進展。 感謝您的幫助提前。
編輯:我解決了等號問題,現在我想這個問題可能源於我將對象推入cpuCollection數組的方式。當我嘗試和記錄cpuCollection時,我得到[CPU,CPU],這顯然不是我想要的。我如何將創建時的CPU對象推到cpuCollection中,並保持其所有屬性不變。
你的意思是'this.name ==='而不是'this.name ='。 – lonesomeday
查看我的解決方案 - 應該有助於理解如何修復和優化代碼。讓我知道如果您有任何問題 – mhodges