簡體   English   中英

放置由javascript生成的同一圖像的多個實例

[英]Placing multiple instances of the same image generated by javascript

我正在制作一個測試頁,用戶輸入消耗的糖量,然后生成一個圖形儀表,向他們顯示該值與每日推薦糖攝入量的對應關系。

儀表本身就是一個圖形,我將其分為三個部分:開始蓋,中間蓋和結束蓋。 請參閱以下鏈接: http : //i.imgur.com/CfFI7.jpg

我的問題是,我當前正在運行的代碼不想在包含div的欄中間部分添加多個實例。 在這種情況下,僅改變圖形那部分的寬度就足夠了,但是我寧願能夠將圖形重復x次,直到它填滿適當數量的條形。 圖形的每個部分(開頭,中間和結尾)均為10像素寬。

注意:我正在嘗試對其進行編碼,以便它將根據我在CSS中給定的大小動態填充儀表(而不是使用固定寬度的條形/儀表)。

這是我的JavaScript:

function showbar() {
    //GRAPHICS OF BAR
    sugarbar = document.getElementById('bar1');
    bar_width = parseInt($('#bar1').css("width"))
    $('#bar1').css({
        "height": "10px", "width": "300px", "border-radius" : "4px", "border": "1px solid #666633", "background-color": "cccc66" });

    //CALCULATION OF SUGAR LEVELS
    sugarunit = (parseInt($('#bar1').css("width")))/100;
    sugaramount = sugarunit*data.sugar;


    //MUST SET IMAGE HEIGHT
    barheight = "10" 

    //VALUE ON BAR
    bar_start = new Image();
    bar_start.src = "startcap.png";
    bar_start.height = barheight; 


    bar_middle = new Image();
    bar_middle.src = "midbar.png";
    bar_middle.height = barheight; 

    bar_end = new Image();
    bar_end.src = "endcap.png";
    bar_end.height = barheight;

    //IF THE SUGAR INTAKE IS LESS THAN THE PIXEL WIDTH OF THE STARTING CAP
    if (sugaramount<bar_start.width) {
        bar_start.width=sugaramount;
        sugarbar.appendChild(bar_start);
        sugarbar.appendChild(bar_end);
    }

    //IF THE SUGAR INTAKE IS BETWEEN THE WIDTH OF THE STARTING CAP AND BEFORE THE END CAP CAN BEGIN
    else if (sugaramount>=bar_start.width) {
        sugarbar.appendChild(bar_start);

        i = Math.floor(sugaramount-(bar_start.width+bar_end.width));

        for (j=1; j<=i; j++) {
            sugarbar.appendChild(bar_middle);
        }

        bar_middle.width = sugaramount%10;
        sugarbar.appendChild(bar_middle);
        sugarbar.appendChild(bar_end);
    }
}

編輯:澄清一下,appendChild不想包含我創建的圖像的多個實例。 即使我編寫sugarbar.appendChild(bar_middle);它也只顯示一次。 多次。 是否有一個原因?

EDIT2:我制作了一個jsfiddle http://jsfiddle.net/7W6HY/1/如果您想嘗試使用它

每次狀態更改時,您都需要調用此函數。 因此,當用戶輸入已經消耗了多少糖時,該事件需要調用以下函數:

var input = document.getElementById('yourinput');
input.addEventListener('blur', showbar, false);

當然,我建議將參數傳遞給具有糖量的showbar()函數。

但是,每次調用該函數時,都需要從DOM中刪除其他圖像(或隱藏它們)。 檢查圖像是否存在。 如果是這樣,則將其刪除(或隱藏)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM