iteye_6838 2009-06-16 11:52
浏览 252
已采纳

javascript类的问题

javascript问题

目的:学写一个javascript类,来实现[color=red]星级投票[/color]系统的使用。
问题:[color=red]当用该类new一个没有问题,如果连续new两个以上的对象,只有最后一个对象起作用[/color]。
问题范围:本人对javascript类不是很明晰,可能是[color=blue]类写得有问题,或者类里面的方法问题[/color],再多次new对象时候,是不是方法会共用了?

类代码:
function AgStar(pid,newid,tag){
var starno = 5;
var selectno = 2;
var nid = newid;
var ag = new Array('差','一般','还行','不错','力荐');
//this.pid = pid;
init = function(){

var div = document.createElement('div');
var str = '';
str += "

" + tag + ""
for(var i = 0; i < starno; i++){
str += "★";
}
str += "
";
div.innerHTML = str;
$(pid).appendChild(div);
setStar(selectno);
}
setStar = function(n){
for(var i = n+1; i < starno; i++){
$(nid+i).style.color = "#ccf";
}
for(i = 0; i <= n; i++){
$(nid+i).style.color = "#669";
}
}
out = function(){
this.setStar(selectno);
}
selectStar = function(n){
selectno = n;
this.setStar(n);
}
this.getScore = function(){
return selectno+1;
}
init();
}

调用代码:
var ag = new AgStar('showDiv','service','服务');
var ag2 = new AgStar('showDiv','efficency','效率');

结果:服务的不能动,没有反应;而效率的可以正常使用。
[b]问题补充:[/b]
javascript问题

目的:学写一个javascript类,来实现[color=red]星级投票[/color]系统的使用。
问题:[color=red]当用该类new一个没有问题,如果连续new两个以上的对象,只有最后一个对象起作用[/color]。
问题范围:本人对javascript类不是很明晰,可能是[color=blue]类写得有问题,或者类里面的方法问题[/color],再多次new对象时候,是不是方法会共用了?

类代码:
function AgStar(pid,newid,tag){//pid是显示地方,newid是这个功能的id,tag是显示标签
var starno = 5;
var selectno = 2;
var nid = newid;
var ag = new Array('差','一般','还行','不错','力荐');
//this.pid = pid;
init = function(){

var div = document.createElement('div');
var str = '';
str += "

" + tag + ""
for(var i = 0; i < starno; i++){
str += "★";
}
str += "
";
div.innerHTML = str;
$(pid).appendChild(div);
setStar(selectno);
}
setStar = function(n){
for(var i = n+1; i < starno; i++){
$(nid+i).style.color = "#ccf";
}
for(i = 0; i <= n; i++){
$(nid+i).style.color = "#669";
}
}
out = function(){
this.setStar(selectno);
}
selectStar = function(n){
selectno = n;
this.setStar(n);
}
this.getScore = function(){
return selectno+1;
}
init();
}

调用代码:
var ag = new AgStar('showDiv','service','服务');
var ag2 = new AgStar('showDiv','efficency','效率');

结果:服务的不能动,没有反应;而效率的可以正常使用。
[b]问题补充:[/b]
全部改成了this,变量为公共的,方法也为公共的,但是还是不能使用。

  • 写回答

6条回答 默认 最新

  • zhangrunzgz 2009-06-19 17:41
    关注

    建议楼主写成class模样(跟你学的)。
    比如:
    [code="java"]function firstP(){
    this.name = "";
    this.id = "";
    this.setp = function (name,id){
    this.name=name;
    this.id=id;
    }
    this.show=function(){
    alert(this.name);
    }
    }
    var t1 = new firstP();
    t1.setp("zr","a");
    var t2 = new firstP();
    t2.setp("zrrrrr","aaaaa");
    t1.show();
    t2.show();[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable