關(guān)于數(shù)據(jù)與后端進行交流匹配(點亮星星)
1.在項目中碰到了商品評價頁面,里面有關(guān)于對商品的星星評價,當時的我只是把效果寫出來了(就是用戶點擊幾顆星星亮就顯現(xiàn)幾顆亮),
當我做好頁面交給后端同事的時候,他說我這樣做沒有意義他沒法做,那時我的腦子有些懵了。
后來后端同事說他來搗騰算了,作為一名21世紀的陽光好青年怎么能夠把自己的任務(wù)都讓同事來幫忙完成呢~
通過同事一番指教和自己的探索,總算明白了這里面的關(guān)系,下面我通過自己的話來說明這個程序應(yīng)該怎么寫,要具備哪些操作。
a,先上圖:

b:上面圖片評價一個亮了5顆,一個亮了4顆,是什么東西讓它這樣的呢?見下圖:

是的,沒錯,起始星星的點亮顆數(shù)就是因為data
c: 現(xiàn)在可以來談?wù)撘幌逻@個data了,可是這個data是個什么東西呢?
原來他是前端和后端約定好在取存數(shù)據(jù)的地方(可以給它取任意名字tada,tdat都可以),后端可以給它賦值,data等于多少就亮多少顆星星??墒菫槭裁匆@個data呢?
是醬紫的:用戶a點擊星星的時候是為了之后可以給用戶b用戶c用戶d...看的,所以用戶點擊的這個星星的個數(shù)必須可以存儲(賦值)在某個地方(也就是data)上讓后臺能夠取到
也就是前端賦值,后端取值,而后后端把取得的數(shù)據(jù)儲存在數(shù)據(jù)庫中而后重新賦值于data上,以顯示用戶a曾評價的好評的星星個數(shù)。
前端賦值-----》后端取值--》后端儲存數(shù)據(jù)--》后端根據(jù)儲存的數(shù)據(jù)反饋給前端--》前端根據(jù)后端反饋的數(shù)據(jù)在頁面中展現(xiàn)相應(yīng)的效果
好了,清楚了邏輯就可以寫程序了:
$('.evaluate_mark').each(function(){
var star = $(this).find('.u-grade').attr('data'); //獲取data 一個為5,一個為4
/*alert(star)*/
$(this).find('.u-grade div').removeClass('light'); //移除所有class的 light
$(this).find('.u-grade div').each(function(i,ele){ //ele當前的元素, i當前元素的索引
if(i<star){
/*alert(i);*/
/*alert(ele);*/
$(ele).addClass('light');
}
});
});
上面的代碼比較簡單,首先遍歷,遍歷找到.u-grade下面的div,也就是u-grada_item,
找到它之后把它所有的light移除掉(light是css中點亮星星的class),而后把u-grada_item進行遍歷,star已經(jīng)取得了data值,根據(jù)i<star進行判斷
從而顯示星星亮度的個數(shù),也就是上面第一張圖一個亮五顆星一個亮四顆。
4.1:至此我們已經(jīng)完成了后端賦值,前端表現(xiàn)效果這一塊了。此時還差兩塊,
一塊是用戶點擊產(chǎn)生效果這一塊,另一塊是把用戶點擊當前星星的那個數(shù)值賦值在data上(讓后端取值保存,重新賦值展現(xiàn))
4.2:下面來做用戶點擊表現(xiàn)效果這一塊
$(function(){
$.setGrade = function($ele,index){
var $item = $ele.find(".u-grade_item");
$item.removeClass("light");
$item.slice(0,index+1).addClass("light");
/*alert(index+1);*/
};
(function(){
var $item = $(".u-grade .u-grade_item");
$item.click(function(){
var $this = $(this); /*定義一個變量保存當前的$item對象*/
var index = $this.parent(".u-grade").children(".u-grade_item").index($this);
//通過index()返回指定元素的index位置,也就是自己所認為的當前元素的索引值
/*alert(index);*/
$.setGrade($this.parent(),index); //jQuery下的靜態(tài)方法
})
})();
});
a:代碼實現(xiàn)就不一一說了,可以看注釋,就這樣,就完成用戶點擊產(chǎn)生效果這一塊,下面只差最后一塊了,把用戶點擊的這個星星的數(shù)值賦值在data上,
明確這個就很好辦了:
(function(){
var $item = $(".u-grade .u-grade_item");
$item.click(function(){
var $this = $(this);
var index = $this.parent(".u-grade").children(".u-grade_item").index($this);
var star = $(this).parent(".u-grade").attr('data',index+1);
//把點擊當前的那個元素的索引賦值給data,以可以改變原來data的數(shù)值
$.setGrade($this.parent(),index); //jQuery下的靜態(tài)方法
})
})();
好了,到此本文的全部內(nèi)容就介紹完了,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
uniapp幾行代碼解決滾動穿透問題(項目實戰(zhàn))
這篇文章主要介紹了uniapp幾行代碼解決滾動穿透問題,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
Javascript中字符串相關(guān)常用的使用方法總結(jié)
本篇文章主要介紹了Javascript中字符串相關(guān)常用的使用方法。具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03
javascript定時保存表單數(shù)據(jù)的代碼
我相信有不少TX用過QQ或163的郵箱吧?他們中有一個比較有用且有趣的功能,如果您在編寫郵件,那在固定一個時間頻率內(nèi),它會自動將您的郵件內(nèi)容保存起來,以免丟失。2011-03-03
前臺js改變Session的值(用ajax實現(xiàn))
前臺js改變Session的值,有很多的新手朋友對此問題會很陌生,本文將提供解決方法,需要了解的朋友可以參考下2012-12-12

