<script type="text/javascript"> function fn(strCon){ var imgSrcCon=strCon.match(/<img.*?>.*?<\/img>/g); if(imgSrcCon != null){ for(var k=0;k<imgSrcCon.length;k++){ var k1 = imgSrcCon[k].indexOf("="); var k2 = imgSrcCon[k].indexOf(">"); var k3 = imgSrcCon[k].indexOf("<",k2); var uri = imgSrcCon[k].substring(k2+1,k3); var str1 = imgSrcCon[k].substring(k1+1,k2); var w = str1.split("x")[0]; var h = str1.split("x")[1]; <!--<img width=-w height=-h src="/images/img/-uri"></img>--> /*动态创建img标签*/ var imgs = document.createElement("img"); imgs.width = "-w"; imgs.height = "-h"; imgs.src = "/images/img/-uri"; var d = document.getElementsByTagName("img=-wx-h"); /*获取原来的伪img标签的父节点,并将创建好的img标签添加到父节点下*/ d[0].parentNode.appendChild(imgs); /*删除伪img标签*/ d[0].parentNode.removeChild(d[0]); } }else{ console.log(2222222222222222222222); } } </script>
怎样在.ejs页面中调用fn()方法?
解决方案
已解决:
方法:
<%var imgSrcCon=strCon.match(/<img.*?>.*?<\/img>/g);%><script> if("<%-imgSrcCon%>" != null){ fn("<%-imgSrcCon%>"); }</script>
这个和js一样,直接在<script>标签里面调用、传递参数,它与下面的方法的不同之处在fn("<%-imgSrcCon%>");传递到方法,将得到一个字符串(但是实际上imgSrcCon是一个数组),还得将字符串处理为数组;而下面的方法可以直接使用数组。
下面是:没有将js代码与结构层分离的一种写法。
<%-ques[i]['0']['content'].replace(/\[([^\[\]]*)\]/g, "<$1>")%> <%var str = ques[i]['0']['content'].replace(/\[([^\[\]]*)\]/g, "<$1>");%> <%function fn(){%> <%var imgSrc=str.match(/<img.*?>.*?<\/img>/g);%> <%if(imgSrc != null){%> <%for(var k=0;k<imgSrc.length;k++){%> <%var k1 = imgSrc[k].indexOf("=");%> <%var k2 = imgSrc[k].indexOf(">");%> <%var k3 = imgSrc[k].indexOf("<",k2);%> <%var uri = imgSrc[k].substring(k2+1,k3);%> <%var str1 = imgSrc[k].substring(k1+1,k2);%> <%var w = str1.split("x")[0];%> <%var h = str1.split("x")[1];%> <%}%> <img width=<%-w%> height=<%-h%> src="/images/img/<%-uri%>"></img> <script> var d = document.getElementsByTagName("img=<%-w%>x<%-h%>"); d[0].parentNode.removeChild(d[0]); </script> <%}%> <%}%
最后谢谢各位的帮助。