如何在ejs标签内插入javascript变量

时间:2014-09-22 11:17:51

标签: javascript jquery html5 node.js ejs

我正在进行动态过滤,但如果条件检查我无法做到。

我想将targetOS var插入<%if(data [i] .ListNames == targetOS ){%>

对于上面的语法,它给出了" targetOS变量未定义"

请帮忙。



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

		($(this).parent().parent()).find(".COTSTargetOSClass").append("<option>Select One</option>");
		
	});
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

你想做的事情是不可能的!

这是发生的事情的顺序:

1 - 在服务器中,ejs呈现为HTML

2 - 然后将HTML传输到浏览器

3 - 浏览器读取并处理javascript

JavaScript执行发生的时间晚于ejs执行。

答案 1 :(得分:0)

@fmsf回复的内容是正确的。但是,如果你知道服务器上的targetOS值,那么在渲染ejs时你可以这样做:

在你的ejs文件中定义它:

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

然后当你通过ejs渲染页面时,将参数传递给它:

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