2010-11-11 68 views
0

我使用下面的代碼將內容插入頁面。我需要在文本中插入一些變量以生成一些動態值,並且不確定如何執行此操作。有人能告訴我我需要改變什麼嗎?如何在將內容存儲在對象中時將變量插入文本?

這裏是我如何保存在我的JS數據的瘦身例如:

var fruit = { 
    'apples': { 
     'goldenDelicious' : { 
      color: 'yellow', 
      sale: 'A sale of $XXXXX (need to insert a number in here). Be sure to buy some before they are all gone!', 
      link: { 
       linkText: ('This company sells this for $XXXXX (eed to insert a price here). Click here to visit their site.'), 
       url: 'I NEED TO INSERT THE URL HERE' 
      } 
     } 
    } 
} 

這裏是我如何調用它的例子:(它比這個更有活力,但你的想法)

var fruitType = 'apples'; 
var fruitVariety = 'goldenDelicious'; 

fruit[fruitType][fruitVariety], function() { 
    // do something 
}); 

所以我想要的是能夠像價格,銷售和URL插入到對象的價值。

+0

你應該保持你的數據不變,並在渲染時進行轉換(我猜想是HTML)。這正是JavaScript模板引擎所要做的。 – Mic 2010-11-11 15:58:06

回答

1

有很多方法可以做到這一點。如果你要做很多這種類型的替換,你可能會想看看模板引擎。我一直在使用Trimpath,並且很滿意。

如果您不想獲得那種幻想,請在字符串中放置自己的佔位符標記,然後替換它們。

var fruit = { 
    'apples': { 
     'goldenDelicious' : { 
      color: 'yellow', 
      sale: 'A sale of PLACEHOLDER_1. Be sure to buy some before they are all gone!', 
      link: { 
       linkText: ('This company sells this for PLACEHOLDER_2. Click here to visit their site.'), 
       url: 'I NEED TO INSERT THE URL HERE' 
      } 
     } 
    } 
} 

fruit.apples.goldenDelicious.sale = fruit.apples.goldenDelicious.sale.replace("PLACEHOLDER_1", "the real value"); 
+0

感謝您的幫助!它似乎不想使用點符號 - 它只會使用括號。任何想法爲什麼?我是否需要去定義goldenDelicious和銷售?我試圖把它們放在引號中,但這也沒有幫助。 – Cofey 2010-11-11 15:46:32

相關問題