Javascript – Ein weiteres Problem bei diesem Verweis
给我你的怀抱
给我你的怀抱 2017-06-30 09:58:07
0
4
849

Dies ist ein Sternebewertungs-Plug-in, geschrieben in nativem JS. Wenn der Abschnitt for(var k = 0)... extrahiert und dann im Abschnittthat.getStarPoint.call(this,point,active)ausgeführt wird, funktioniert dies nicht. Dies zeigt auf star[i], wie man star[i] und star[k] erstellt. habe das gleiche Was ist die Rolle?

html: (Die Sterne werden vorübergehend durch Farbblöcke ersetzt)

    星星评分插件   

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
给我你的怀抱
给我你的怀抱

Antworte allen (4)
女神的闺蜜爱上我

感觉把 this 绑到 getStarPoint() 意义不大,因为除了当前元素,还有前面的元素都要置为 active,不如就 循环然后star[k].className = active;

    为情所困

    我觉得,你应该将that作为getStarPoint的上下文,写作that.getStarPoint.call(that, point, active);,此处that才是Star实例。

      阿神

      把str数组传过去呗,getStarPoint 这个对纯粹的循环操作 ,对this是啥并无要求。

        学霸

        不太理解你说的 “star[i]和star[k]有相同的作用”, 是什么意思。如果onmouseover 知道自己是哪一个star,可以用闭包把i传过去:

        for(var i = 0; i

        star[i].index = i; star[i].onmouseover = (function(i) { return function(){ that.clearAllStar.call(this); /*for(var k = 0; k

        }

          Neueste Downloads
          Mehr>
          Web-Effekte
          Quellcode der Website
          Website-Materialien
          Frontend-Vorlage
          Über uns Haftungsausschluss Sitemap
          Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!