Il s'agit d'un plug-in de notation par étoiles, écrit en js natif. Lorsque la section for(var k = 0)... est extraite, puis exécutée dans la sectionthat.getStarPoint.call(this,point,active)
, cela ne fonctionnera pas. Cela pointe vers star[i], comment créer star[i] et star[k]. avoir le même Quel est le rôle ?
html : (Les étoiles sont temporairement remplacées par des blocs de couleurs)
星星评分插件
js :
;(function(global,undefined){ 'use strict' var _global; function Star(options){ this.defaultOptions = { starBox: '.star', //装星星的obj starActive: 'active', //鼠标移上去的样式 starPoint: '.star-point' //星星评分 }; this.opt = this.extend(this.defaultOptions, options || {} || ''); this.star = this.getElem(this.opt.starBox).getElementsByTagName('span'); this.len = this.star.length; this.init(options); } Star.prototype = { constructor: this, init: function(options){ var that = this; var starBox = that.getElem(that.opt.starBox), starPoint = that.getElem(that.opt.starPoint), active = that.opt.starActive, star = starBox.getElementsByTagName('span'), point = 0; for(var i = 0; i
J'ai l'impression que lier cela à getStarPoint() n'a pas beaucoup de sens, car en plus de l'élément actuel, tous les éléments précédents doivent être définis sur actif. Il est préférable de faire une boucle, puis
.star[k].className = active;
Je pense que vous devriez considérer
that
作为getStarPoint
的上下文,写作that.getStarPoint.call(that, point, active);
,此处that
comme l'instance Star.Passez le tableau str. getStarPoint est une opération de boucle pure et n'a aucune exigence quant à ce que c'est.
Je ne comprends pas très bien ce que tu veux dire par « star[i] et star[k] ont le même effet ». Si onmouseover sait de quelle étoile il s'agit, il peut utiliser la fermeture pour passer i :
for(var i = 0; i
}