亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

jQuery入門第二天&&&正則表達式完結篇——仿smarty引擎的制作

2019-11-14 14:41:54
字體:
來源:轉載
供稿:網友

  hi

周一完全的不在狀態。。。中午還去觀戰,沒有睡覺的我,晚上的smarty不知道能不能做完,加油吧

1、jQuery

---過濾性選擇器(二)---

--[attribute=value]屬性選擇器

屬性作為DOM元素的一個重要特征,也可以用于選擇器中,從本節開始將介紹通過元素屬性獲取元素的選擇器,[attribute=value]屬性選擇器的功能是獲取與屬性名和屬性值完全相同的全部元素,其中[]是專用于屬性選擇器的括號符,參數attribute表示屬性名稱,value參數表示屬性值。

<h3>改變"title"屬性值為"蔬菜"的背景色</h3>
<ul>
<li title="蔬菜">茄子</li>
<li title="水果">香蕉</li>
<li title="蔬菜">芹菜</li>
<li title="水果">蘋果</li>
<li title="水果">西瓜</li>
</ul>

<script type="text/javascript">
$("li[title='蔬菜']").CSS("background-color", "green");

[attribute=value]屬性選擇器正好相反,[attribute!=value]屬性選擇器的功能是獲取不包含屬性名,或者與屬性名和屬性值不相同的全部元素,其中[]是專用于屬性選擇器的括號符,參數attribute表示屬性名稱,value參數表示屬性值。

--[attribute*=value]屬性選擇器

介紹一個功能更為強大的屬性選擇器[attribute*=value],它可以獲取屬性值中包含指定內容的全部元素,其中[]是專用于屬性選擇器的括號符,參數attribute表示屬性名稱,value參數表示對應的屬性值。

<h3>改變"title"屬性值包含"果"的背景色</h3>
<ul>
<li title="蔬菜">茄子</li>
<li title="水果">香蕉</li>
<li title="蔬菜">芹菜</li>
<li title="人參果">小西紅柿</li>
<li title="水果">西瓜</li>
</ul>

<script type="text/Javascript">

$("li[title*='果']").css("background-color", "green");

--:first-child子元素過濾選擇器

通過上面章節的學習,我們知道使用:first過濾選擇器可以獲取指定父元素中的首個子元素,但該選擇器返回的只有一個元素,并不是一個集合,而使用:first-child子元素過濾選擇器則可以獲取每個父元素中返回的首個子元素,它是一個集合,常用多個集合數據的選擇處理。

<h3>改變每個"蔬菜水果"中第一行的背景色</h3>
<ol>
<li>芹菜</li>
<li>茄子</li>
<li>蘿卜</li>
<li>大白菜</li>
<li>西紅柿</li>
</ol>
<ol>
<li>橘子</li>
<li>香蕉</li>
<li>葡萄</li>
<li>蘋果</li>
<li>西瓜</li>
</ol>

<script type="text/javascript">
$("li:first-child").css("background-color", "green");

 $("li:last-child").css("background-color", "blue");

:first-child子元素過濾選擇器功能相反,:last-child子元素過濾選擇器的功能是獲取每個父元素中返回的最后一個子元素,它也是一個集合,常用多個集合數據的選擇處理。

---表單選擇器---

--:input表單選擇器

如何獲取表單全部元素?:input表單選擇器可以實現,它的功能是返回全部的表單元素,不僅包括所有<input>標記的表單元素,而且還包括<textarea>、<select> 和 <button>標記的表單元素,因此,它選擇的表單元素是最廣的。

<h3>修改全部表單元素的背景色</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<select>
<option>Option</option>
</select><br />
<textarea rows="3" cols="8"></textarea><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest:input").addClass("bg_blue");
</script>

--:text表單文本選擇器

:text表單文本選擇器可以獲取表單中全部單行的文本輸入框元素,單行的文本輸入框就像一個不換行的字條工具,使用非常廣泛。

 

<h3>修改多個單行輸入框元素的背景色</h3>
<form id="frmTest" action="#">
<input type="text" id="Text1" value="我是小紙條"/><br />
<textarea rows="3" cols="8"></textarea><br />
<input type="text" id="Text2" value="我也是小紙條"/><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :text").addClass("bg_blue");
</script>

--:passWord表單密碼選擇器

如果想要獲取密碼輸入文本框,可以使用:password選擇器,它的功能是獲取表單中全部的密碼輸入文本框元素。

 

<h3>修改多個密碼輸入框元素的背景色</h3>
<form id="frmTest" action="#">
<input type="text" id="Text1" value="單行文本輸入框"/><br />
<input type="password" id="Text2" value="密碼文本輸入框"/><br />
<textarea rows="3" cols="8">區域文本輸入框</textarea><br />
<input type="password" id="Text3" value="密碼文本輸入框"/><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :password").addClass("bg_red");
</script>
</body>

--:radio單選按鈕選擇器

表單中的單選按鈕常用于多項數據中僅選擇其一,而使用:radio選擇器可輕松獲取表單中的全部單選按鈕元素。

 

<h3>將表單中單選按鈕設為不可用</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<input id="Radio1" type="radio" />
<label for="Radio1">
男</label>
<input id="Radio2" type="radio" />
<label for="Radio2">
女</label><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :radio").attr("disabled","true");
</script>

--:checkbox復選框選擇器

表單中的復選框常用于多項數據的選擇,使用:checkbox選擇器可以快速定位并獲取表單中的復選框元素。

<h3>將表單的全部復選框設為不可用</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<input id="Checkbox1" type="checkbox" />
<label for="Checkbox1">
西紅柿</label><br />
<input id="Checkbox2" type="checkbox" />
<label for="Checkbox2">
茄子</label><br />
<input id="Checkbox3" type="checkbox" />
<label for="Checkbox3">
黃瓜</label><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest :checkbox").attr("disabled","true");
</script>

--:submit提交按鈕選擇器

通常情況下,一個表單中只允許有一個“type”屬性值為“submit”的提交按鈕,使用:submit選擇器可獲取表單中的這個提交按鈕元素。

 

<h3>修改表單中提交按鈕的背景色</h3>
<form id="frmTest" action="#">
<input type="button" value="Input Button" /><br />
<input type="submit" value="點我就提交了" /><br />
<button>
Button</button><br />
</form>

<script type="text/javascript">
$("#frmTest input:submit").addClass("bg_red");
</script>

--:image圖像域選擇器

當一個<input>元素的“type”屬性值設為“image”時,該元素就是一個圖像域,使用:image選擇器可以快速獲取該類全部元素。

 

<h3>修改表單中圖像元素的背景色</h3>
<form id="frmTest" action="#">
<input type="image" src="http://img.mukewang.com/52b284ea00016b2902590070.jpg" /><br />
<br />
<img alt="" src="http://img.mukewang.com/52b284ea00016b2902590070.jpg" /><br />
</form>

<script type="text/javascript">
$("#frmTest :image").addClass("bg_red");
</script>

--:button表單按鈕選擇器

表單中包含許多類型的按鈕,而使用:button選擇器能獲取且只能獲取“type”屬性值為“button”的<input>和<button>這兩類普通按鈕元素。

 

<h3>修改表單中按鈕元素的背景色</h3>
<form id="frmTest" action="#">
<input id="Button1" type="button" value="我是普通按鈕" /><br />
<input id="Submit1" type="submit" value="點我就提交" /><br />
<button> 我也是普通按鈕 </button><br />
</form>

<script type="text/javascript">
$("#frmTest :button").addClass("bg_blue");
</script>

--:checked選中狀態選擇器

有一些元素存在選中狀態,如復選框、單選按鈕元素,選中時“checked”屬性值為“checked”,調用:checked可以獲取處于選中狀態的全部元素。

<h3>將處于選中狀態的元素設為不可用</h3>
<form id="frmTest" action="#">
<input id="Radio1" type="radio" checked="checked" />
<label id="Label1" for="Radio1">
蘋果</label><br />
<input id="Radio2" type="radio" />
<label id="Label2" for="Radio2">
桔子</label><br />
<input id="Checkbox1" type="checkbox" checked="checked" />
<label id="Label3" for="Checkbox1">
荔枝</label><br />
<input id="Checkbox2" type="checkbox" />
<label id="Label4" for="Checkbox2">
葡萄</label><br />
<input id="Checkbox3" type="checkbox" checked="checked" />
<label id="Label5" for="Checkbox3">
香蕉</label><br />
</form>

<script type="text/javascript">
$("#frmTest :checked").attr("disabled", true);
</script>

--:selected選中狀態選擇器

:checked選擇器相比,:selected選擇器只能獲取<select>下拉列表框中全部處于選中狀態的<option>選項元素。

<h3>獲取處于選中狀態元素的內容</h3>
<form id="frmTest" action="#">
<select id="Select1" multiple="multiple">
<option value="0">蘋果</option>
<option value="1" selected="selected">桔子</option>
<option value="2">荔枝</option>
<option value="3" selected="selected">葡萄</option>
<option value="4">香蕉</option>
</select><br /><br />
<div id="tip"></div>
</form>

<script type="text/javascript">
var $txtOpt = $("#frmTest :selected").text();
$("#tip").html("選中內容為:" + $txtOpt);
</script>

----------------------------------------------------------------

2、正則表達式

 這里要做的引擎模板的作用是,替換變量輸出。

需要的是模板文件.class,編譯源文件.php

--template.class.php

<?php
/*
* 描述:仿smarty模板引擎類文件
*
*/

class template{
PRivate $templateDir; //用來存儲源文件所在目錄
private $compileDir; //用來存放編譯后的文件目錄
private $leftTag='{#'; //要替換的對象的標記,smarty默認是{
private $rightTag='#}';
private $currentTemp=''; //用來存儲當前正在編譯的模板文件名
private $outputHtml; //用來存放currentTemp的HTML代碼
private $varpool=array(); //變量池;模板編譯時存放變量

public function __construct($templateDir,$compileDir,$leftTag=null,$rightTag=null){
$this->templateDir=$templateDir;
$this->compileDir=$compileDir;
if (!empty($leftTag)) $this->leftTag=$leftTag; //傳遞左右標記的時候,需要做一下非空的判斷
if (!empty($rightTag)) $this->rightTag=$rightTag;
}

//assign函數——把模板中需要用到的變量,放到地址池中,并給定標記
public function assign($tag,$var){
$this->varpool[$tag]=$var;
}

//與上面的assign對應,從地址池中取出變量
public function getVar($tag){
return $this->varpool[$tag];
}

//getSourceTemplate:獲取編譯的源文件_需要知道文件名,和完整的路徑(所以要有拓展名
public function getSourceTemplate($templateName,$ext='.html'){
$this->currentTemp=$templateName;
$sourceFilename=$this->templateDir.$this->currentTemp.$ext;
$this->outputHtml=file_get_contents($sourceFilename);
}

//compileTemplate:編譯方法
public function compileTemplate($templateName=null,$ext='.html'){
$templateName=empty($templateName)? $this->currentTemp:$templateName;
//核心代碼,正則編譯
///{#/$(/w+)#/}
$pattern='//{#/$(/w+)#/}/';
//更加清晰的寫法$pattern='/'.preg_quote($this->leftTag).' */$([a-zA-Z_]/w*) *'.preg_quote($this->rightTag).'/';
//核心代碼要做的就是找到標記內的東西,然后替換為php可以識別的內容
$this->outputHtml=preg_replace($pattern, '<?php echo $this->getVar(/'$1/')?>', $this->outputHtml);
//注意這里的preg_replace的用法,$1表示匹配的子模式

//下面生成目標文件,同樣也需要完整的目標路徑
$compiledFilename=$this->compileDir.md5($templateName).$ext;
file_put_contents($compiledFilename,$this->outputHtml);
}

public function display($templateName = null, $ext = '.html') {
$templateName = empty($templateName) ? $this->currentTemp : $templateName;
include_once $this->compileDir.md5($templateName).$ext;
}

}

--index.php

<?php
/*
* 山寨模板引擎測試文件
*/

//包含文件
require_once 'template.class.php';
//獲取路徑,basedir根目錄
$baseDir=str_replace('//', '/',dirname(__FILE__));
$temp=new template($baseDir.'/source/', $baseDir.'/compliled/');

//變量池
$temp->assign('pagetitle', '山寨版smarty');
$temp->assign('test','imooc女神');

//
$temp->getSourceTemplate('index');
$temp->compileTemplate();
$temp->display();

 --幾個要注意的是

按照屬性+方法,流水線一樣編譯就好

然后,一些服務要開,否則像我一樣,還要調試。。。

祝大家好運。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产福利精品视频| 亚洲福利在线观看| 亚洲人成欧美中文字幕| 久久久亚洲精品视频| 精品久久久久久国产| 5252色成人免费视频| 国产精品网红福利| 国产一区二区三区直播精品电影| 国产视频在线一区二区| 欧洲成人性视频| 国产精品劲爆视频| 97色在线视频观看| 亚洲福利视频网站| 红桃视频成人在线观看| 91在线网站视频| 97在线视频免费播放| 亚洲女人天堂成人av在线| 欧美国产日韩xxxxx| 久久久免费高清电视剧观看| 亚洲大胆人体视频| 国产精品成人在线| 欧美精品激情blacked18| 国产日韩精品电影| 国产成人综合精品在线| 97热在线精品视频在线观看| 国产91在线播放九色快色| 伊人久久男人天堂| 亚洲大尺度美女在线| 欧美亚洲在线观看| 成人欧美一区二区三区在线湿哒哒| 欧美大人香蕉在线| 日韩精品中文字幕在线播放| 国产日韩在线免费| 亚洲欧洲在线看| 国产精品男人的天堂| 91欧美精品成人综合在线观看| 亚洲色图综合久久| 日韩美女视频在线观看| 久久99亚洲精品| 日韩欧美精品网站| 亚洲精品99久久久久| 国产精品人成电影在线观看| 成人免费网站在线看| 欧美激情一区二区三区在线视频观看| 国产精品久久久久久久午夜| 久久久久女教师免费一区| 亚洲免费av网址| 免费不卡在线观看av| xvideos国产精品| 欧美成人激情在线| 国产午夜精品全部视频在线播放| 日韩美女av在线免费观看| 国产欧美一区二区白浆黑人| 国产精品丝袜视频| 国产一区二区日韩精品欧美精品| 欧美肥老太性生活视频| 欧美激情亚洲激情| 国产精品视频在线播放| 精品国内亚洲在观看18黄| 亚洲人高潮女人毛茸茸| 亚洲精品国产美女| 欧美成人h版在线观看| 免费97视频在线精品国自产拍| 亚洲国产成人av在线| 欧美午夜宅男影院在线观看| 国产成人福利夜色影视| 亚洲国产精久久久久久| 亚洲精品一二区| 97国产精品人人爽人人做| 欧美性生交大片免网| 亚洲第一视频在线观看| 日韩精品视频免费专区在线播放| 91久久精品国产91久久性色| 久久久久久av| 国产精品美女www爽爽爽视频| 国产精自产拍久久久久久| 在线亚洲国产精品网| 中文字幕亚洲一区二区三区| 国产精品福利无圣光在线一区| 91中文字幕在线观看| 91久久精品美女| 国语自产精品视频在线看一大j8| 国产日韩在线播放| 久久亚洲综合国产精品99麻豆精品福利| 欧美中文字幕视频| 欧美日韩国产在线看| 亚洲欧洲在线观看| 69视频在线免费观看| 亚洲美女在线观看| 91夜夜未满十八勿入爽爽影院| 亚洲 日韩 国产第一| 中文字幕欧美精品日韩中文字幕| 91久久精品国产| 美女av一区二区三区| 成人女保姆的销魂服务| 欧美韩国理论所午夜片917电影| 57pao国产精品一区| 国外日韩电影在线观看| 国产精品福利久久久| 欧美一级免费视频| 久久久久久久久久久亚洲| 久久久噜久噜久久综合| 中文字幕亚洲综合久久筱田步美| 欧美日韩久久久久| 亚洲男子天堂网| 精品亚洲国产成av人片传媒| 国外成人免费在线播放| 欧美日韩激情视频| 日韩欧美国产黄色| 国产精品一区av| 久久精品国产亚洲精品2020| 成人激情视频网| 国产91|九色| 亚洲欧美日韩精品| 亚洲大胆美女视频| 中文字幕亚洲天堂| 高跟丝袜欧美一区| 91久久精品国产| 国产精品自拍偷拍视频| 国产精品99久久久久久久久久久久| 亚洲一区二区中文字幕| 精品中文字幕在线2019| 精品成人69xx.xyz| 国产婷婷成人久久av免费高清| 欧美激情视频在线| 国产手机视频精品| 欧美小视频在线| 欧美激情综合色综合啪啪五月| 综合网日日天干夜夜久久| 欧美激情中文网| 不卡在线观看电视剧完整版| 精品国内自产拍在线观看| 亚洲自拍小视频免费观看| 一级做a爰片久久毛片美女图片| 亚洲电影免费观看高清完整版| 91免费综合在线| 欧美激情视频网站| 在线看日韩av| 91久久久久久久一区二区| 中文字幕视频在线免费欧美日韩综合在线看| 日韩中文字幕在线观看| 在线日韩中文字幕| 91啪国产在线| 亚洲免费视频网站| 欧美高清电影在线看| 久久久天堂国产精品女人| 午夜精品99久久免费| 欧美日韩人人澡狠狠躁视频| 92看片淫黄大片看国产片| 国产精品老女人视频| 久久精品电影网站| 日韩成人免费视频| 久久99久久99精品免观看粉嫩| 国产精品久久久久久久天堂| 国产999精品视频| 亚洲欧美制服另类日韩| 欧美重口另类videos人妖| 国产97色在线|日韩| 日韩精品在线视频美女| 日韩电影中文字幕在线| 欧美日韩一区二区在线| 不卡伊人av在线播放| 欧美综合一区第一页| xvideos成人免费中文版|