2014-09-22 111 views
0

我正在做動態過濾,但如果條件檢查,我無法做到。如何在ejs標籤中插入javascript變量

我要插入內<%targetOS VAR如果(數據[I] .ListNames == targetOS){%>

爲上述語法它給 「targetOS變量未定義」

請幫忙。

\t $(document).on("change",'.COTSCurrentOSClass', function(e){ \t \t 
 
\t \t var selectedOS = $(this).val(); \t \t \t \t 
 
\t \t var targetOS = "OS::From::"+selectedOS; 
 
\t \t 
 
\t \t <%for(var i=0;i<data.length;i++){%> 
 
\t \t \t <%if(data[i].ListNames == ***targetOS***){%> 
 
\t \t \t \t <%for(var j=0;j<data[i].Values.length;j++){%> 
 
\t \t \t \t console.log("options are"); 
 
\t \t \t \t console.log(data[i].Values[j]); 
 
\t \t <%}}}%> 
 

 
\t \t ($(this).parent().parent()).find(".COTSTargetOSClass").append("<option>Select One</option>"); 
 
\t \t 
 
\t });

回答

0

你想要做什麼是不可能的!

這是會發生什麼情況的順序:

1 - 在服務器中,該EJS呈現爲HTML

2 - 然後將HTML被傳遞到瀏覽器

3 - 瀏覽器讀取和處理JavaScript執行JavaScript的執行發生在比執行ejs晚得多的階段。

0

@fmsf回覆的內容是正確的。但是,如果你知道在服務器上targetOS價值,同時渲染EJS你可以做這樣的:

在EJS文件中定義它是這樣的:

var TARGET_OS = "<%= TARGET_OS %>"; 

然後,當您呈現通過頁面ejs,像這樣傳遞參數:

res.render(url, {TARGET_OS: "Your desired value here"}, function(err, html) {