热门搜索 :
教你做菜
您的当前位置:首页正文

javascript+css好多网站用的选星星实现打分功能的函数_表单特效

2023-12-02 来源:海亿美食网
函数有两个参数,功能如下: obj: img标签组的父容器,类型为DOM对象; oEvent: event对象。这个函数的优点是html代码可以很简洁,使用图片也可以很少,只需要两张图片。事件句柄只需要写在img的父容器上即可。演示用的图片我用的是绝对地址,各位在使用的时候改成网站的相对地址就可以了。当我们点击的时候,我用的是个alert事件。事实上,我们会在这个地方用个ajax方法,把相关的参数传到服务器端。只要把alert(this._num+1)写成sendAjax(this._num+1)就可以了。 需要的两张图片: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

小编还为您整理了以下内容,可能对您也有帮助:

jquery星星评分代码,到小数点,有css

jQuery+PHP实现购物商城常用的星级评分效果,我们在商城平台购买商品后,会有个评分功能,本实例就来说说实现方法。

首先我们在.rate里面加入显示的灰星星p#big_rate、亮星星p#big_rate_up、分数span#s及span#g和提示信息p#my_rate。
接着我们写一个获取评分的方法get_rate() :

function get_rate(rate) { rate = rate.toString(); var s; var g; $("#g").show(); if (rate.length >= 3) { s = 10; g = 0; $("#g").hide(); } else if (rate == "0") { s = 0; g = 0; } else { s = rate.substr(0, 1); g = rate.substr(1, 1); } $("#s").text(s); $("#g").text("." + g); $(".big_rate_up").animate({ width: (parseInt(s) + parseInt(g) / 10) * 14, height: 26 }, 1000); $(".big_rate span").each(function() { $(this).mouseover(function() { $(".big_rate_up").width($(this).attr("rate") * 14); $("#s").text($(this).attr("rate")); $("#g").text(""); }).click(function() { var score = $(this).attr("rate"); $("#my_rate").html("您的评分:<span>" + score + "</span>"); $.ajax({ type: "POST", url: "ajax.php", data: "score=" + score, success: function(msg) { //alert(msg); if (msg == 1) { $("#my_rate").html("<span>您已经评过分了!</span>"); } else if (msg == 2) { $("#my_rate").html("<span>您评过分了!</span>"); } else { get_rate(msg); } } }); }) }) $(".big_rate").mouseout(function() { $("#s").text(s); $("#g").text("." + g); $(".big_rate_up").width((parseInt(s) + parseInt(g) / 10) * 14); }) }

然后直接调用该方法即可:

get_rate(<?php echo $aver; ?>);

ajax.php接收前端发送过来的分数值,通过cookie判断用户IP和评分时间,防止重复评分。

$score = $_POST['score']; if (isset($score)) { $cookiestr = getip(); $time = time(); if (isset($_COOKIE['person']) && $_COOKIE['person'] == $cookiestr) { echo "1"; } elseif (isset($_COOKIE['rate_time']) && ($time - intval($_COOKIE['rate_time'])) < 60) { echo "2"; } else { $query = mysql_query("update raty set voter=voter+1,total=total+'$score' where id=1"); $query = mysql_query("select * from raty where id=1"); $rs = mysql_fetch_array($query); $aver = 0; if ($rs) { $aver = $rs['total'] / $rs['voter']; $aver = round($aver, 1) * 10; } //设置COOKIE setcookie("person", $cookiestr, time() + 3600 * 365); setcookie("rate_time", time(), time() + 3600 * 365); echo $aver; } }

raty表结构:

CREATE TABLE IF NOT EXISTS `raty` ( `id` int(11) NOT NULL auto_increment, `voter` int(10) NOT NULL default '0' COMMENT '评分次数', `total` int(11) NOT NULL default '0' COMMENT '总分', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

最后记得在raty评分表里面加一条数据。

本文来自Gxlcms,php教程栏目,欢迎学习!

jquery星星评分代码,到小数点,有css

jQuery+PHP实现购物商城常用的星级评分效果,我们在商城平台购买商品后,会有个评分功能,本实例就来说说实现方法。

首先我们在.rate里面加入显示的灰星星p#big_rate、亮星星p#big_rate_up、分数span#s及span#g和提示信息p#my_rate。
接着我们写一个获取评分的方法get_rate() :

function get_rate(rate) { rate = rate.toString(); var s; var g; $("#g").show(); if (rate.length >= 3) { s = 10; g = 0; $("#g").hide(); } else if (rate == "0") { s = 0; g = 0; } else { s = rate.substr(0, 1); g = rate.substr(1, 1); } $("#s").text(s); $("#g").text("." + g); $(".big_rate_up").animate({ width: (parseInt(s) + parseInt(g) / 10) * 14, height: 26 }, 1000); $(".big_rate span").each(function() { $(this).mouseover(function() { $(".big_rate_up").width($(this).attr("rate") * 14); $("#s").text($(this).attr("rate")); $("#g").text(""); }).click(function() { var score = $(this).attr("rate"); $("#my_rate").html("您的评分:<span>" + score + "</span>"); $.ajax({ type: "POST", url: "ajax.php", data: "score=" + score, success: function(msg) { //alert(msg); if (msg == 1) { $("#my_rate").html("<span>您已经评过分了!</span>"); } else if (msg == 2) { $("#my_rate").html("<span>您评过分了!</span>"); } else { get_rate(msg); } } }); }) }) $(".big_rate").mouseout(function() { $("#s").text(s); $("#g").text("." + g); $(".big_rate_up").width((parseInt(s) + parseInt(g) / 10) * 14); }) }

然后直接调用该方法即可:

get_rate(<?php echo $aver; ?>);

ajax.php接收前端发送过来的分数值,通过cookie判断用户IP和评分时间,防止重复评分。

$score = $_POST['score']; if (isset($score)) { $cookiestr = getip(); $time = time(); if (isset($_COOKIE['person']) && $_COOKIE['person'] == $cookiestr) { echo "1"; } elseif (isset($_COOKIE['rate_time']) && ($time - intval($_COOKIE['rate_time'])) < 60) { echo "2"; } else { $query = mysql_query("update raty set voter=voter+1,total=total+'$score' where id=1"); $query = mysql_query("select * from raty where id=1"); $rs = mysql_fetch_array($query); $aver = 0; if ($rs) { $aver = $rs['total'] / $rs['voter']; $aver = round($aver, 1) * 10; } //设置COOKIE setcookie("person", $cookiestr, time() + 3600 * 365); setcookie("rate_time", time(), time() + 3600 * 365); echo $aver; } }

raty表结构:

CREATE TABLE IF NOT EXISTS `raty` ( `id` int(11) NOT NULL auto_increment, `voter` int(10) NOT NULL default '0' COMMENT '评分次数', `total` int(11) NOT NULL default '0' COMMENT '总分', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

最后记得在raty评分表里面加一条数据。

本文来自Gxlcms,php教程栏目,欢迎学习!

关于星星打分效果的改写

工作当中,要实现一个打分星星评价效果,网上搜罗了一个常用的方法,但发现原代码有不足之处;
1.鼠标在星星上面滑动,在未单击的情况下滑离,若干星星会变亮,正常来讲,用户不单击打分,鼠标离开后,星星都应该为灰色,不应该有*星星出现;
2.鼠标单击星星,效果正常,但用户无法对打分结果进行修改,从用户体验和网站友好度考虑,这是不足取的;
为了更好的完善打分效果,在原代码的基础上做了以下修改:克服了上述两点的不足。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>评价打分星星效果</title>
<script type="text/javascript">
function rate(obj,oEvent){
var imgSrc = 'http://image1.koubei.com/images/store/icon_star_1.gif';
var imgSrc_2 = 'http://image1.koubei.com/images/store/icon_star_2.gif';
if(obj.rateFlag) return;
var e = oEvent || window.event;
var target = e.target || e.srcElement;
var imgArray = obj.getElementsByTagName("img");
for(var i=0;i<imgArray.length;i++){
imgArray[i]._num = i;
imgArray[i].onclick=function(){
if(obj.rateFlag) return;
alert(this._num+1);
var inputid=this.parentNode.previousSibling
inputid.value=this._num+1;
}
}
if(target.tagName=="IMG"){
for(var j=0;j<imgArray.length;j++){

if(j<=target._num){
imgArray[j].src=imgSrc_2;
} else {
imgArray[j].src=imgSrc;
}
target.parentNode.onmouseout=function(){
var imgnum=parseInt(target.parentNode.previousSibling.value);
for(n=0;n<imgArray.length;n++){
imgArray[n].src=imgSrc;
}
for(n=0;n<imgnum;n++){
imgArray[n].src=imgSrc_2;
}
}
}
} else {
return false;
}
}
</script>
</head>
<body>
<input type="hidden" value="0"/><p onmouseover="rate(this,event)">
<img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="很烂" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="一般" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="还好" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="较好" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="很好" />
</p>
</body>
</html>

关于星星打分效果的改写

工作当中,要实现一个打分星星评价效果,网上搜罗了一个常用的方法,但发现原代码有不足之处;
1.鼠标在星星上面滑动,在未单击的情况下滑离,若干星星会变亮,正常来讲,用户不单击打分,鼠标离开后,星星都应该为灰色,不应该有*星星出现;
2.鼠标单击星星,效果正常,但用户无法对打分结果进行修改,从用户体验和网站友好度考虑,这是不足取的;
为了更好的完善打分效果,在原代码的基础上做了以下修改:克服了上述两点的不足。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>评价打分星星效果</title>
<script type="text/javascript">
function rate(obj,oEvent){
var imgSrc = 'http://image1.koubei.com/images/store/icon_star_1.gif';
var imgSrc_2 = 'http://image1.koubei.com/images/store/icon_star_2.gif';
if(obj.rateFlag) return;
var e = oEvent || window.event;
var target = e.target || e.srcElement;
var imgArray = obj.getElementsByTagName("img");
for(var i=0;i<imgArray.length;i++){
imgArray[i]._num = i;
imgArray[i].onclick=function(){
if(obj.rateFlag) return;
alert(this._num+1);
var inputid=this.parentNode.previousSibling
inputid.value=this._num+1;
}
}
if(target.tagName=="IMG"){
for(var j=0;j<imgArray.length;j++){

if(j<=target._num){
imgArray[j].src=imgSrc_2;
} else {
imgArray[j].src=imgSrc;
}
target.parentNode.onmouseout=function(){
var imgnum=parseInt(target.parentNode.previousSibling.value);
for(n=0;n<imgArray.length;n++){
imgArray[n].src=imgSrc;
}
for(n=0;n<imgnum;n++){
imgArray[n].src=imgSrc_2;
}
}
}
} else {
return false;
}
}
</script>
</head>
<body>
<input type="hidden" value="0"/><p onmouseover="rate(this,event)">
<img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="很烂" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="一般" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="还好" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="较好" /><img src="http://image1.koubei.com/images/store/icon_star_1.gif" title="很好" />
</p>
</body>
</html>

网页上怎样表示动态用星星表示评分 的html+css,支持半颗星

你可以到这个地方去看一下

http://www.zhangxinxu.com/study/201308/hello-star.html

半星可以将图片换成灰色星星和半星然后多加5个A标签和label

如何添加CSS和Javascript定制Drupal7表单

Drupal7表单定制和Drupal6大致相同,但是也有一些区别。这次我就来说说Drupal7是如何定制表单的。新建一个“form_theme”模块,然后创建一个表单,显示如下:
My name is [FORM INPUT] [FORM INPUT] and I am [FORM INPUT] years old.
这三个表单元素的默认值依次显示“First name”,“Last name”和“Age”,当用户点击某个INPUT时,该表单元素的值为空,然后你就能随意书写了。
这个简易的功能涉及到:

主题化表单
给表单添加JQuery(JavaScript)
给表单添加CSS {3 u& v2 ~# Z

这个教程的主要目的是学习如何主题化表单,我不会对一些与主题化不相关的代码做过多地介绍。同样地,如果你想看懂这篇教程,你必须先知道:

怎样在Drupal7中创建一个模块
怎样在Drupal中使用drupal_get_form()创建一个表单. L, k% L+ ]6 @

我也不会对教程中的CSS和JQuery代码做过多的讲解,你可以直接复制并粘贴到本地去试验。呵呵,我的目的是如何将CSS和JQuery添加进Drupal中。; V8 L' p, l' R; V, r& h
开始吧!
第一步:使用hook_menu()为表单注册一个路径
我需要先注册一个页面路径好展现表单,下面是hook_menu()的实现:; L! ]& j! G: ~9 i, Q: @

<?php
function form_theme_menu()
{% A' A/ V) E6 Y/ D
$menu['form_theme'] = array- L( C9 Q8 b, B& O# y
(5 L: V; A: z9 Y5 V& F; s) z
'title' => 'Theming Forms',# ^, @* y" ~# E$ s
'description' => 'Practicing theming forms in Drupal 7',6 j* _8 q. V* y% {: E* S2 Y- W) ]
'page callback' => 'drupal_get_form',
'page arguments' => array('form_theme_form'),
'access callback' => TRUE,
);
return $menu;9 R2 l- k+ U8 `$ Z. q, j S* ~# Q
}- b1 U( ?) f8 D! W4 h# K3 b
?>$ w" u1 g) p5 |8 f0 a
; i% L* q7 z* ]' ?$ ^
第二步:定义表单! _' D0 {/ R F$ U; _( |, X0 A/ f9 t2 ^
在我的表单里,我需要三个textfield,表单定义如下:

<?php/ A; i: w- h& w) T0 O0 L
$form['first_name'] = array
(# `% w. I7 N( [! c! i5 V6 G
'#type' => 'textfield',3 {3 e) ~ h* }- @5 s
);
$form['last_name'] = array4 B1 w' a( U3 l9 m) j2 Y
(+ c, U$ e/ c( T+ S
'#type' => 'textfield',
);; o% T. G- h. V
$form['age'] = array
(
'#type' => 'textfield',
'#maxlength' => 3,
);
?>9 s: g7 |6 p" g" k# v

嘿嘿,代码十分简洁吧。我已经创建了这些表单元素,它们没什么修饰或其它配置。
然后,我需要添加CSS和Javascript到该表单。Drupal7有个新属性,#attached,我能通过它添加,代码如下:
$ Z; ]- H6 M- B6 v0 s- h0 p: c* [
<?php4 z$ w4 p8 V4 J& e3 [% D* m
// Get the path to the mole
$path = drupal_get_path('mole', 'form_theme');3 v A& `7 M, d
// Attach the CSS and JS to the form
$form['#attached'] = array7 P* _0 l2 @% |' @
(
'css' => array8 E2 S8 q. q! p! r
(
'type' => 'file',$ e/ J4 u, Z* x" i6 O3 W
'data' => $path . '/form_theme.css',
),
'js' => array
(
'type' => 'file',; u% U. h2 q) Q+ G$ p9 ~# o
'data' => $path . '/form_theme.js',5 W1 X* H* I" T2 n' u* k1 d
),
);; x/ j' W4 Z: D+ T8 N
?>5 J' P3 o; _8 Q, w: k0 N& K; P
! s: M0 C v( w0 ?0 E
这种方法相比drupal_add_js()和drupal_add_css()有个很大的好处,就是其它模块可以在该模块的样式和脚本的基础上做修改。/ \( o/ V2 {6 O& h! N$ u
最后,返回我的$form表单,代码如下:

<?php5 r. v% I4 E; z, c! W
function form_theme_form($form, &$form_state)
{7 M/ x! [- e: b0 G$ |# Q* {: j
$form['first_name'] = array
(
'#type' => 'textfield',
);
$form['last_name'] = array
(1 H* u; X4 K& V
'#type' => 'textfield',# u! q% v3 p' @" V+ Q4 e- w4 }
);
$form['age'] = array
() m1 K: a5 }5 I7 v( x0 g
'#type' => 'textfield',
'#maxlength' => 3,
); q; a" u* D8 v1 U% ]0 a3 M2 t
// Get the path to the mole
$path = drupal_get_path('mole', 'form_theme');+ I9 e) M# G+ Q8 l. ]; S
// Attach the CSS and JS to the form
$form['#attached'] = array
(7 o, N- U# ]& R$ H" l9 b
'css' => array
(- b6 U7 M& H6 l4 o9 R; i" J
'type' => 'file',7 f+ U0 q* i. K! g/ M5 a
'data' => $path . '/form_theme.css',
),/ y- g0 B: @* _+ B7 V) c3 ^4 ^
'js' => array
(
'type' => 'file',- ?2 p6 a' }! n; k3 I
'data' => $path . '/form_theme.js',
),6 P6 }' l; \' s; q# l+ w7 e5 \
);9 \& ?' w4 f! t7 a
return $form;9 Y: l- Z! g( }# G$ N4 [
}
?>. D" J8 ?! g5 x8 U7 J6 p' E: Q2 _) u: a
8 Z: E) N' |+ K. G1 v
第三步:用hook_theme()注册一个主题函数
从Drupal6开始,主题函数就需要通过hook_theme()注册,但是在Drupal6和Drupal7中还是有些细微的区别。在Drupal7中,表单的主题函数不是使用“arguments”,而是使用仅仅只有“form”一个值的“render element”。在注册主题函数时,你必须让索引和你已经定义的表单函数保持一致。代码如下:) c! v- b! p" m9 n) X3 M! G/ ~$ M7 ^

<?php7 Z* P% D$ l# Y
function form_theme_theme()
{" |1 C, f4 Q. S
return array: x; k; @( }/ l) J' W% ?
(
'form_theme_form' => array
(
'render element' => 'form', Y" j3 @3 n" g X1 a
),
);; z: e( J7 m6 j: d* t" z7 `
}
?>

正如你所见,我已经注册了一个主题函数。主题函数的命名十分重要,因为这个主题函数跟表单有相同的名称,Drupal在实现这个表单时会自动调用该主题函数。我也不需要添加#theme到我定义的表单$form中,这是多余的。3 b: \# q; j0 M+ R- H8 O/ |
第四步:写主题函数& c3 O0 d9 L7 s& K- H ^
在Drupal7中,写主题函数,有几个注意点。它们是:

函数只有一个参数,命名为$variables的数组。$variables有一个form索引,该索引的值就包括所有你已定义的表单元素。
所有的表单元素必须要作为参数传给drupal_render()函数。这个函数能将一个PHP数组转换成HTML,并且将Javascript和css添加进去。这些Drupal会自动帮你完成,你仅仅需要传递这些参数就行了。
在写主题函数的最后,你必须将剩余的表单元素传给drupal_render_children()函数,这样才能将剩下的或隐藏的表单元素转换成HTML。这是跟Drupal6一个很大的不同。在Drupal6中,我们直接传递$form给drupal_render(),但是在Drupal7中,这样做就会导致死循环,而且不会出现任何错误提示。2 i6 I6 ?* L1 x4 V9 Z: U

主题函数是以“theme_”加上我们上面注册过“form_theme_form”命名的。代码如下:

<?php+ z/ M- h) A0 A, `, p0 q D
function theme_form_theme_form($variables)2 W8 q7 I% N0 n" f: g
{( a# u1 L, l4 X1 s3 J
// Isolate the form definition form the $variables array
$form = $variables['form'];' t8 B$ u6 y4 S: W: j
$output = '<h2>' . t('Please enter your information below') . '</h2>';
// Put the entire structure into a div that can be used for
// CSS purposes. B; @- R3 s+ `" U
$output .= '<div id="personal_details">';
// Each of the pieces of text is wrapped in a <span>
// tag to allow it to be floated left( g: _' \8 O- R' B. }) ~# }% G
$output .= '<span>' . t('My name is') . '</span>';
// Form elements are rendered with drupal_render()/ ?# M# J3 v" k* p }5 O1 v
$output .= drupal_render($form['first_name']);" N7 N$ w7 F! [
$output .= drupal_render($form['last_name']);
$output .= '<span>' . t('and I am') . '</span>';" g c6 e4 v, C# y/ t# c% K
$output .= drupal_render($form['age']);8 ] Q* s, M' k
$output .= '<span>' . t('years old.') . '</span>';
$output .= '</div>';: k& V$ k( R( ~ l
// Pass the remaining form elements through drupal_render_children()
$output .= drupal_render_children($form);! X% r2 L9 c* }
// return the output
return $output;
}8 L" N. n4 x8 J$ L7 l% H
?>1 T5 ^$ J5 t3 u, z

到这里,我已经完成大部分的内容,定义表单,注册主题函数,实现主题函数。但是我还没添加CSS和Javascript。

如何添加CSS和Javascript定制Drupal7表单

Drupal7表单定制和Drupal6大致相同,但是也有一些区别。这次我就来说说Drupal7是如何定制表单的。新建一个“form_theme”模块,然后创建一个表单,显示如下:
My name is [FORM INPUT] [FORM INPUT] and I am [FORM INPUT] years old.
这三个表单元素的默认值依次显示“First name”,“Last name”和“Age”,当用户点击某个INPUT时,该表单元素的值为空,然后你就能随意书写了。
这个简易的功能涉及到:

主题化表单
给表单添加JQuery(JavaScript)
给表单添加CSS {3 u& v2 ~# Z

这个教程的主要目的是学习如何主题化表单,我不会对一些与主题化不相关的代码做过多地介绍。同样地,如果你想看懂这篇教程,你必须先知道:

怎样在Drupal7中创建一个模块
怎样在Drupal中使用drupal_get_form()创建一个表单. L, k% L+ ]6 @

我也不会对教程中的CSS和JQuery代码做过多的讲解,你可以直接复制并粘贴到本地去试验。呵呵,我的目的是如何将CSS和JQuery添加进Drupal中。; V8 L' p, l' R; V, r& h
开始吧!
第一步:使用hook_menu()为表单注册一个路径
我需要先注册一个页面路径好展现表单,下面是hook_menu()的实现:; L! ]& j! G: ~9 i, Q: @

<?php
function form_theme_menu()
{% A' A/ V) E6 Y/ D
$menu['form_theme'] = array- L( C9 Q8 b, B& O# y
(5 L: V; A: z9 Y5 V& F; s) z
'title' => 'Theming Forms',# ^, @* y" ~# E$ s
'description' => 'Practicing theming forms in Drupal 7',6 j* _8 q. V* y% {: E* S2 Y- W) ]
'page callback' => 'drupal_get_form',
'page arguments' => array('form_theme_form'),
'access callback' => TRUE,
);
return $menu;9 R2 l- k+ U8 `$ Z. q, j S* ~# Q
}- b1 U( ?) f8 D! W4 h# K3 b
?>$ w" u1 g) p5 |8 f0 a
; i% L* q7 z* ]' ?$ ^
第二步:定义表单! _' D0 {/ R F$ U; _( |, X0 A/ f9 t2 ^
在我的表单里,我需要三个textfield,表单定义如下:

<?php/ A; i: w- h& w) T0 O0 L
$form['first_name'] = array
(# `% w. I7 N( [! c! i5 V6 G
'#type' => 'textfield',3 {3 e) ~ h* }- @5 s
);
$form['last_name'] = array4 B1 w' a( U3 l9 m) j2 Y
(+ c, U$ e/ c( T+ S
'#type' => 'textfield',
);; o% T. G- h. V
$form['age'] = array
(
'#type' => 'textfield',
'#maxlength' => 3,
);
?>9 s: g7 |6 p" g" k# v

嘿嘿,代码十分简洁吧。我已经创建了这些表单元素,它们没什么修饰或其它配置。
然后,我需要添加CSS和Javascript到该表单。Drupal7有个新属性,#attached,我能通过它添加,代码如下:
$ Z; ]- H6 M- B6 v0 s- h0 p: c* [
<?php4 z$ w4 p8 V4 J& e3 [% D* m
// Get the path to the mole
$path = drupal_get_path('mole', 'form_theme');3 v A& `7 M, d
// Attach the CSS and JS to the form
$form['#attached'] = array7 P* _0 l2 @% |' @
(
'css' => array8 E2 S8 q. q! p! r
(
'type' => 'file',$ e/ J4 u, Z* x" i6 O3 W
'data' => $path . '/form_theme.css',
),
'js' => array
(
'type' => 'file',; u% U. h2 q) Q+ G$ p9 ~# o
'data' => $path . '/form_theme.js',5 W1 X* H* I" T2 n' u* k1 d
),
);; x/ j' W4 Z: D+ T8 N
?>5 J' P3 o; _8 Q, w: k0 N& K; P
! s: M0 C v( w0 ?0 E
这种方法相比drupal_add_js()和drupal_add_css()有个很大的好处,就是其它模块可以在该模块的样式和脚本的基础上做修改。/ \( o/ V2 {6 O& h! N$ u
最后,返回我的$form表单,代码如下:

<?php5 r. v% I4 E; z, c! W
function form_theme_form($form, &$form_state)
{7 M/ x! [- e: b0 G$ |# Q* {: j
$form['first_name'] = array
(
'#type' => 'textfield',
);
$form['last_name'] = array
(1 H* u; X4 K& V
'#type' => 'textfield',# u! q% v3 p' @" V+ Q4 e- w4 }
);
$form['age'] = array
() m1 K: a5 }5 I7 v( x0 g
'#type' => 'textfield',
'#maxlength' => 3,
); q; a" u* D8 v1 U% ]0 a3 M2 t
// Get the path to the mole
$path = drupal_get_path('mole', 'form_theme');+ I9 e) M# G+ Q8 l. ]; S
// Attach the CSS and JS to the form
$form['#attached'] = array
(7 o, N- U# ]& R$ H" l9 b
'css' => array
(- b6 U7 M& H6 l4 o9 R; i" J
'type' => 'file',7 f+ U0 q* i. K! g/ M5 a
'data' => $path . '/form_theme.css',
),/ y- g0 B: @* _+ B7 V) c3 ^4 ^
'js' => array
(
'type' => 'file',- ?2 p6 a' }! n; k3 I
'data' => $path . '/form_theme.js',
),6 P6 }' l; \' s; q# l+ w7 e5 \
);9 \& ?' w4 f! t7 a
return $form;9 Y: l- Z! g( }# G$ N4 [
}
?>. D" J8 ?! g5 x8 U7 J6 p' E: Q2 _) u: a
8 Z: E) N' |+ K. G1 v
第三步:用hook_theme()注册一个主题函数
从Drupal6开始,主题函数就需要通过hook_theme()注册,但是在Drupal6和Drupal7中还是有些细微的区别。在Drupal7中,表单的主题函数不是使用“arguments”,而是使用仅仅只有“form”一个值的“render element”。在注册主题函数时,你必须让索引和你已经定义的表单函数保持一致。代码如下:) c! v- b! p" m9 n) X3 M! G/ ~$ M7 ^

<?php7 Z* P% D$ l# Y
function form_theme_theme()
{" |1 C, f4 Q. S
return array: x; k; @( }/ l) J' W% ?
(
'form_theme_form' => array
(
'render element' => 'form', Y" j3 @3 n" g X1 a
),
);; z: e( J7 m6 j: d* t" z7 `
}
?>

正如你所见,我已经注册了一个主题函数。主题函数的命名十分重要,因为这个主题函数跟表单有相同的名称,Drupal在实现这个表单时会自动调用该主题函数。我也不需要添加#theme到我定义的表单$form中,这是多余的。3 b: \# q; j0 M+ R- H8 O/ |
第四步:写主题函数& c3 O0 d9 L7 s& K- H ^
在Drupal7中,写主题函数,有几个注意点。它们是:

函数只有一个参数,命名为$variables的数组。$variables有一个form索引,该索引的值就包括所有你已定义的表单元素。
所有的表单元素必须要作为参数传给drupal_render()函数。这个函数能将一个PHP数组转换成HTML,并且将Javascript和css添加进去。这些Drupal会自动帮你完成,你仅仅需要传递这些参数就行了。
在写主题函数的最后,你必须将剩余的表单元素传给drupal_render_children()函数,这样才能将剩下的或隐藏的表单元素转换成HTML。这是跟Drupal6一个很大的不同。在Drupal6中,我们直接传递$form给drupal_render(),但是在Drupal7中,这样做就会导致死循环,而且不会出现任何错误提示。2 i6 I6 ?* L1 x4 V9 Z: U

主题函数是以“theme_”加上我们上面注册过“form_theme_form”命名的。代码如下:

<?php+ z/ M- h) A0 A, `, p0 q D
function theme_form_theme_form($variables)2 W8 q7 I% N0 n" f: g
{( a# u1 L, l4 X1 s3 J
// Isolate the form definition form the $variables array
$form = $variables['form'];' t8 B$ u6 y4 S: W: j
$output = '<h2>' . t('Please enter your information below') . '</h2>';
// Put the entire structure into a div that can be used for
// CSS purposes. B; @- R3 s+ `" U
$output .= '<div id="personal_details">';
// Each of the pieces of text is wrapped in a <span>
// tag to allow it to be floated left( g: _' \8 O- R' B. }) ~# }% G
$output .= '<span>' . t('My name is') . '</span>';
// Form elements are rendered with drupal_render()/ ?# M# J3 v" k* p }5 O1 v
$output .= drupal_render($form['first_name']);" N7 N$ w7 F! [
$output .= drupal_render($form['last_name']);
$output .= '<span>' . t('and I am') . '</span>';" g c6 e4 v, C# y/ t# c% K
$output .= drupal_render($form['age']);8 ] Q* s, M' k
$output .= '<span>' . t('years old.') . '</span>';
$output .= '</div>';: k& V$ k( R( ~ l
// Pass the remaining form elements through drupal_render_children()
$output .= drupal_render_children($form);! X% r2 L9 c* }
// return the output
return $output;
}8 L" N. n4 x8 J$ L7 l% H
?>1 T5 ^$ J5 t3 u, z

到这里,我已经完成大部分的内容,定义表单,注册主题函数,实现主题函数。但是我还没添加CSS和Javascript。

网页制作的常用的代码技术

1,Q:怎样把别人网页上的背景音乐保存下来?

A:浏览该网页后,在你的 Windows\Temporary Internet Files 文件夹下可以找到该背景音乐的缓存文件,拷贝出来即可使用。如果还是找不见该文件,可以打开网页的源文件,找到音乐文件的 URL 路径,用“蚂蚁”等 FTP 软件进行下载。

2,Q:避免有人从你分帧的主页的帧中径直进入网站,而不是从 index.htm 中进入?

A:在帧中的网页的〈head〉〈/head〉之间加入以下脚本代码:

〈Script language="JavaScript"〉

if (top==self)

self.location.href="index.htm";

〈/Script〉

这样,当有人从帧中进入网站时,就会自动重定向到主页文件 index.htm。

3.Q:怎样防止别人把你的网页放到框架里?

A:因为框架(frame)的缘故,有许多人把别人的网页放置到自己的框架里,使之成为自己的一页。如果你要防止别人这样做,可以加入下列 JavaScript 代码即可,它会自动监测,然后跳出别人的框架。

〈Script language="javascript"〉

if (self != top)

top.location = self.location;

〈/Script〉

4,Q:怎样在 FrontPage2000 中加入 Flash 动画?

A:在 FrontPage2000 中,点击[插入]->[高级]->[插件],在弹出的窗口中,设置一下 Flash 文件的大小及其它信息,确定即可。

5,Q:怎样在网页中加入注释?

A:在共同网页开发中,加入注释是防止分工被搞混淆或者注释某段代码特殊的含义,加入注释的格式是:

〈!-〔注释内容…〕--〉

6,Q:怎样测试浏览器并自动装入所需要的网页?

A:目前微软和网景的浏览器并不能完全兼容所有网页,有的网页在某种浏览器中非常漂亮, 而用其它浏览器查看时却一团糟。如果你需要测试浏览器,可以加入以下 JavaScript 代码使浏览器自动装入所需要的网页:

〈script LANGUAGE="JavaScript"〉

function TestBrowser()

{

ie = ((navigator.appName=="Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 3 ))

ns = ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 3 ))

if (ns) { setTimeout("location.href="ns.htm"",10); }

else {setTimeout("location.href="ie.htm"",10); }

}

〈/script〉

7,Q:怎样让链接没有下划线?

A:只要在〈Head〉〈/Head〉中加入以下代码,所有链接就都没有下划线了:

〈style type="text/css"〉

〈!--

a {text-transform:none;text-decoration:none;}

a:hover {text-decoration:underline}

--〉

〈/style〉。

8,Q:怎样在网页中加入 E-mail 链接并显示预定的主题?

A: 〈A href="mailto:Emailhost@263.net?subject=主题"〉……〈/a〉

9,Q:怎样让网页的背景图像不滚动?

A: Internet Explorer 浏览器支持一个 Body 属性 bgproperties,它可以让背景不滚动:

〈Body Background="图片文件" bgproperties="fixed"〉

10,Q;怎样定义网页的关键字?

A:在网页中加入关键字,可以供某些搜索站台机器人使用,它们会利用该关键字为你的网站做索引, 这样,当别人用关键字搜索网站时,如果你的网页包含该关键字,那么就可以被列出了。定义本网页关键字,可以在〈Head〉〈/Head〉中加入如下代码:

〈meta name="Keywords" c〉

Content 中所包含的就是关键字,你可以自行设置。

这里有个技巧,你可以重复某一个单词,这样可以提高自己网站的排行位置,如:

〈meta name="Keywords" c〉

11,Q:怎样隐藏在状态栏里出现的链接信息?

A:大家知道,当你指向一个链接时,该链接的信息就会出现在浏览器的状态栏里, 如果需要隐藏它,可以本链接中做如下设置:

〈a href="http://zhanghing.yeah.net" none"; return true"〉链接〈/a〉

12,Q:怎样在网页中加入多媒体播放?

A:有些多媒体文件无需其他程序就可以播放, 而有许多多媒体文件需要外部程序才能播放。如果浏览器没有安装这种外部程序,那么浏览器会自动去下载。 要加入多媒体格式,可加入如下代码:

〈EMBED SRC="test.ram" AUTOSTART="TRUE" LOOP="3" WIDTH="80" HEIGHT="30"〉

13,Q:怎样在网页中加入电子邮件表单提交?

A:表单提交需要 CGI 程序的支持,但也可以利用 E-mail 提交,当你设计好表单后, 把 Action 内容加入邮件地址即可,例如:

〈form method="POST" action="mailto:zhangking@263.net" ENCTYPE="text/plain"〉

……

〈/form〉

14,Q:用 Word 作为 Html 编辑器产生的代码比较冗长,怎么优化?

A:可以用网页制做软件 Dreameweaver3.0 进行优化。

15,Q:IE5.0 的部分快捷键:

A:打开查找功能:Ctrl+F

关闭浏览器窗口:Ctrl+W

打开地址栏下拉列表框:F4

刷 新:F5

将当前Web页保存到收藏夹列表:Ctrl+D

打开当前 IE 窗口的一个拷贝:Ctrl+N

停止下载当前网页:Esc

光标迅速移动到网页的开头:Home

光标迅速移动到网页的尾部:End

打开新的地址键入窗口:Ctrl+O

打开收藏夹:Ctrl+I

打开历史记录文件夹:Ctrl+H

打开浏览器设定的默认主页:Alt+HOME

16,Q:网页上的图形格式:

A:图形的格式千奇百怪,但是一般 WWW 浏览器支持的图形格式只有 .gif 和 .jpg(.jpe),这两种都是经过压缩的图形文档。所以文件较小,适合在网络上传送。如果你的图形是别的格式, 则必须使用图形处理软件来将其转存成 .GIF 或 .JPG 的图形格式。但到底该用那一种图形格式呢? 先看看下面的比较:

[tr=#ffeacc][td][/td][td]GIF 格式[/td][td]JPEG 格式[/td][/tr][tr][td]压缩比例[/td][td]较小[/td][td]从大到小有四种选择[/td][/tr][tr][td]最多支援的颜色[/td][td]256色[/td][td]全彩(16百万色)[/td][/tr][tr][td]渐显功能(“隔行”方式)[/td][td]GIF89a有[/td][td]无[/td][/tr][tr][td]背景透明功能[/td][td]GIF89a有[/td][td]无[/td][/tr][tr][td]动画[/td][td]GIF89a有[/td][td]无[/td][/tr]

结论是:比较大或颜色较多的图形就用 .JPG 的格式, 比较小或颜色较少, 而且需要有特殊功能的图,就用 .GIF 格式。注意:.GIF 还分为 GIF87a 和比较新的 GIF89a 两种格式,一些特殊的功能(像透明背景) 则是 GIF89a 才有的。当你真的无从选择的时候,就干脆分别储存成两种图形格式,看看那个文件比较小,就用那一个。

将 Gif 文件保存成“隔行”方式:在 Photoshop 中,保存时选择“Interlaced”。

将 jpg 文件保存成“逐级”方式:在 Photoshop 中,保存时选择“Progressive”。这样,图形显示时将由模糊逐渐变得清晰起来。

17,Q:表格中嵌套〈Form〉标签时,换行的取消:

A:在网页制做中,当表格和〈Form〉〈/Form〉标签嵌套时,如果像如下的形式:

〈table border=1〉 〈tr〉 〈td〉 〈Form〉 〈input name= size=〉 〈input type=button value=Test〉 〈/Form〉 〈/td〉 〈/tr〉 〈/table〉 那么在〈Form〉构造出的文本框下会有一个空行,非常影响版面的编排。 而只要把〈/Form〉放到表格标签〈/td〉、〈/tr〉或〈/table〉的外边(如下),则问题就解决了。

〈table border=1〉 〈tr〉 〈td〉 〈Form〉 〈input name= size=〉 〈input type=button value=Test〉 〈/td〉 〈/Form〉 〈/tr〉 〈/table〉 IE3.0 是第一个在网页中支持 ActiveX 控件的网络浏览器。在 Mosaic 和 Netscape Navigator 中也可以使用 ActiveX plug-in for Netscape 显示 ActiveX 控件(参见网址 http://www.ncompasslabs.com)。

18,Q:什么是 ActiveX 控件?

A:Microsoft ActiveX 控件是由软件提供商开发的可重用的软件组件。使用 ActiveX 控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。例如,StockTicker 控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性。

现在,已有 1000 多个商用的 ActiveX 控件。开发控件可以使用各种编程语言,如 C,C++,下一代的Microsoft Visual Basic,以及微软公司的 Visual Java 开发环境 Microsoft Visual J++。ActiveX 控件一

旦被开发出来,设计和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用 ActiveX 控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程

序的设计。

IE3.0 是第一个在网页中支持 ActiveX 控件的网络浏览器。在 Mosaic 和 Netscape Navigator 中也可以使用 ActiveX plug-in for Netscape 显示 ActiveX 控件(参见网址 http://www.ncompasslabs.com)。

19,Q: Netscape Navigator 可以显示 ActiveX 控件吗?

A:可以,在 Netscape Navigator 中可以使用 ActiveX plug-in for Netscape 显示 ActiveX 控件。在Ncompass 实验室的网址 http://www.ncompasslabs.com/ 上可以得到测试版的 plug-in。

20,Q:现在有哪些工具支持使用 ActiveX 控件进行网页开发?

A:使用 ActiveXControlPad(详见http://www.microsoft.com/workshop/author/cpad/),开发人员可以在HTML 网页中方便地插入 ActiveX 控件。按照http://www.microsoft.com/workshop/author/cpad/tutorial-f.htm

网址上的 ActiveX Control Pad 教程,开发人员可以很方便地学习使用 ActiveX ControlPad。SoftQuad 公司的 HoTMetaL Pro 也支持在 HTML 网页上使用 ActiveX 控件。以后,微软公司及其第三方软件供应商还将推出很多支持使用 ActiveX 控件进行网页制作的网络制作工具。

21,Q:只有程序员才能使用 ActiveX 控件吗?

A:了解脚本语言,比如说 Visual Basic Scripting Edition(VBScript) 或 JavaScript,自然对使用ActiveX 控件非常有帮助。但也并非一定要有这样的程序开发基础。对于有些控件来说,需要写一定数量的脚本程序,才能集成到网页中,但大多数 ActiveX 控件却不需要这样。使用 ActiveX Control Pad,即使是非程序开发人员也可以通过简单的选中和点击将很多控件插入网页。

22,Q:在创建了包含 ActiveX 控件的网页后,如果用户在自己的机器上浏览该网页,控件是如何在用户终端机上安装和显示的?

A:当 IE3.0 遇到含有 ActiveX 控件(或复合控件)的网页时,首先检查用户的本地系统注册,察看该组件是否已经安装在本地机上了。如果该组件已经在本地机上,IE3.0 显示该网页并激活控件。如果控件还未在用户本地机上安装,IE3.0 将自动地根据开发者创建网页时的地址定义,从网上找到此控件,并将它安装到本地机上。

23,Q:如何在网页上定义一个地址,使用户访问网页时,控件可以自动下载到用户的计算机上?

A:网页开发者可以通过给控件设置 CODEBASE 属性提供上述信息。使用 ActiveX Control Pad 时,在 ObjectEditor 中,可以看见一个属性表,开发者可以很方便地利用该表设置属性。通过设置属性,可以定义 URL 地址或地址集,通过地址可以在 Internet 上找到并下载控件。IE3.0 正是利用这些地址信息,定位控件并自动下载组件的。下载之后,网页就出现在本地机上了。在 1996 年 7 月的 Microsoft Systems Journal 上,“Safe Web Surfing with the Internet Component Download Service”一文详细论述了整个信息定位及下载过程。需要一提的是,许多 Microsoft 提供的控件(例如 HTML Layout Control)不需要 CODEBASE 设置,因为通过 ActiveX 对象索引(ActiveX Object Index)就可以基于 CLSID(控件唯一标识符)自动找到并定位控件。

24,Q:ActiveX 组件下载时,是否通知用户?

A:是的。当一个组件需要下载时,IE 会缺省地显示一个消息框,通知用户将要开始下载。用户可以选择终止下载或继续下载。如果控件做过数字签名,会提供一份数字认证书, 其中包括提供该控件的软件供应商名字,以及确认该控件未被破坏的有关信息。软件开发者在开发控件时可以做数字签名。签名信息由控件本身携带, 因此在下载之前,会自动显示数字验证书,在网页上使用该控件的用户不需要做任何开发工作。

25,Q:ActiveX 控件下载后,放在什么位置?

A:在缺省情况下,控件下载后要放在 \windows\Downloaded Program Files 目录下的 ActiveX 控件高速缓存中。

我想要用css+div实现一个网页的欢迎界面 类似国旗的五角星大星星是logo其他4个小星星是连接子页面

<div style="position:relative; background-image:url(你的大五角星图片地址); width:大五角星的宽度; height:大五角星的高度;">

<img src="第一个小五角星地址" style=" position:absolute; left:20px; top:20px;"/>

<img src="第二个小五角星地址" style=" position:absolute; left:30px; top:30px;"/>

<img src="第三个小五角星地址" style=" position:absolute; left:40px; top:40px;"/>

<img src="第四个小五角星地址" style=" position:absolute; left:50px; top:50px;"/>

</div>

把上面的代码复制到大五角星要放置的位置,那些中文是要你自己改的,小五角星可以自己在dw里面拖动的,大五角星不要拖动哦。

海亿美食网还为您提供以下相关内容希望对您有帮助:

HTML、JavaScript、CSS、PHP技术在Web开发中的作用是什么?

而他的主要作用之一就是用于特效制作,像那些网站有很多特效的,比如说鼠标放到连接上,然后点一下就出现一个登录框框什么的基本都是JavaScript实现的,还有就是验证你有没有输入内容什么的,像注册用户的时候基本都是它了。最...

javascript的作用

如:Javascript、VBScript、Document Object Model(DOM,文档对象模型)、Layers和 Cascading Style Sheets(CSS,层叠样式表),这里主要讲Javascript。那么Javascript是什么东东?Javascript就是适应动态网页制作的需要而诞生的一种新...

求教,JS怎么也学不会,自学了HTML DIV+CSS,现在JAVASCRIPT怎么也啃...

不用先学JAVA和C的,JAVASCRIPT是一门单独的语言和JAVA没有关系,只是有面向对象语言的基础学起来会容易些,直接学JAVASCRIPT也未尝不可!

如何添加CSS和Javascript定制Drupal7表单

第一步:使用hook_menu()为表单注册一个路径 我需要先注册一个页面路径好展现表单,下面是hook_menu()的实现:; L! ]&amp; j! G: ~9 i, Q:&lt;?php function form_theme_menu(){% A' A/ V) E6 Y/ D menu['f...

求教下面的javascript代码意思

代码使用 $(document).ready() 函数确保文档加载完成后才运行代码。然后使用 $('.menu li a').each() 方法选择菜单中所有列表项内的超链接,并使用 each() 方法循环遍历它们。之后使用 if ($($(this)...

HTML CSS JavaScript实战详解的目 录

3.1.1 定义网页的标题 213.1.2 设置网页的基底网址 223.1.3 掌握强大的元信息标签 223.1.4 怎样和CSS及JavaScript产生联系 243.1.5 头部信息的其他设置 253.2 HTML主体的常用设置 263.2.1 设置网页的背景色 263.2.2 设置网页的...

求大神指导,有没有前端学习视频,自己找了好多,感觉有点乱,觉得学的路线...

网页特效 ES6 进阶 bootstrap animate.css学习 请点击输入图片描述 以上内容的学习用时 10天左右 阶段三 这部分是框架和前后端交互技术的学习 一、Vue Vue基础 模版语法 计算属性侦听器 Class与Style绑定 条件/列表渲染 事件处理 表单输...

javascript课程大纲

第一阶段:前端页面重构:PC端网站布局、HTML5+CSS3基础项目、WebAPP页面布局; 第二阶段:Javascript高级程序设计:原生Javascript交互功能开发、面向对象开发与ES5/ES6、Javascript工具库自主研发; 第三阶段:PC端全栈项目开发:jQuery经典特效交互...

百度空间的CSS是什么啊?

1.什么是网页,什么是超文本语言(html)。 2.会使用Dreamweaver等常用的网页编辑器。 Dreamweaver是现今最好的网站编辑工具之一,而Dreamweaver8增加的对CSS的支持更是你容易得来使用CSS,用它来给制作网页的CSS样式表会更简单、更方便。本...

一个优秀的前端工程师应具备哪些技能?

第一阶段:HTML+CSS:HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、JavaScript基础:Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。JS基本特效:常见特效、例如:tab、导航...

Top