2016-03-02 24 views
1

noobish有抱負的前端工程師在這裏。我目前正在製作一個html5畫布矢量繪圖應用程序,它使調色板更換變得簡單。 我正在創建一個函數,它創建一個命名的顏色變量/對象(例如'primary'或'secondary')並將其存儲在其自己的數組中以便安全保存,但也將它附加到顏色選擇器/調色板交換器菜單中已創建的每個矢量形狀。Jquery:動態添加到context.childNodes [4]不工作

這個想法是,你繪製一個形狀,在那個形狀菜單中選擇'主要'(或者你以前創建的任何顏色變量),並且形狀顏色被設置爲任何主要部分,這可以在單獨「主」顏色變量的菜單。

我正在使用html select,當創建一個新的顏色時,我需要更新已經創建的矢量形狀(包含li的信息)的菜單。我使用這個通過那些在顏色變量構造迭代:

var colorVar = function(name, hexstring){ 
    this.name = name; 
    this.color = hexstring; 
    //append colors to drop downs 
    $("li").each(function(index) { 
    $(this).context.childNodes[4].append("<option value='blue'>" + this.name + "</option>"); 
    }); 
} 

但是當我運行^^的代碼,我得到這個錯誤: 遺漏的類型錯誤:$(...)context.childNodes [4] .append不是函數

當我運行從內的每一個的console.log($(本).context.childNodes [4])()我得到

<select class='colorList'> 
    <option value='blue'>primary color</option> 
</select> 

每形狀,我已經做出了,所以它肯定會迭代它們。 (fyi我添加了原色非動態只是作爲一個測試)

我如何追加到選擇的內部?

歡迎任何其他建議!

(也jQuery是絕對有包括它的HTML工作,所以它不是一個問題;)

回答

0

.append()不是一個原生的JavaScript功能。你可以使用.insertAdjacentHTML()來實現你想要的。

..... .childNodes[4] 
      .insertAdjacentHTML('beforeend', "<option value='blue'>" + 
                this.name + "</option>"); 
+1

非常感謝!也想添加其他誰查看這個insertAdjacentHTML()內的this.name沒有工作,因爲'this'變成$(this),所以我只是使用原始輸入變量名! – Miloshcavitch

0

爲什麼不選擇下拉使用它的類和像這樣做:

$(".colorList").append("<option value='blue'>"+this.name+"</option>"); 
相關問題