我调用js文件中的javascript方法时,返回结果(如果是中文的话)给我的是乱码,而且还有几个方法无法调用。但是我把这些方法嵌入到页面中就没有什么问题。这是为什么?

解决方案 »

  1.   

    一般不会出现这种问题,看你的html编码和js文件的编码是否一致?
      

  2.   

    //javascript 代码。
    <script language="javascript">
    function ValidateElement(id, value, type, regexp)
    {
    this.ID = id;
    this.Value = value;
    this.Type = type;
    this.Regexp = regexp;
    this.Validate = true;
    this.errorMessage;
    }
    ValidateElement.prototype.getErrMsg = function(){return this.errorMessage;};
    ValidateElement.prototype.IsValidate = function()
    {
    var Result;
    var message;
    try
    {
    switch (this.Type)
    {
    case "DateTime":
    var date = /(\d\d\d\d)-(\d{0,1}\d)-(\d{0,3}\d)/;
    Result = this.Value.match(date);
    if (Result == null)
    {
    message = this.ID + "不是有效的日期格式!";
    throw ex;
    }
    break;
    case "Number":
    var Tmp = this.Value;
    if (Tmp.length != this.Regexp)
    {
    message = this.ID + "输入的位数不对!";
    throw ex;
    }
    break;
    case "IsNull":
    if (this.Value == "")
    {
    message = this.ID + "不允许为空!";
    throw ex;
    }
    break;
    default:
    result = this.value.match(this.regexp);
    if (result == null)
    {
    message = this.ID + "的格式不对!";
    throw ex;
    }
    break;
    }

    }
    catch (ex)
    {
    this.errorMessage = message;
    this.Validate = false;
    }
    return this.Validate;
    };
    //控件容器class
    function inputContainer(count)
    {
    this.inputs = new Array(count);
    this.ErrorsMsg = new Array(count);
    this.Validate = true;
    this.index = 0;
    }

    inputContainer.prototype.Add = function (ve)
    {
    this.inputs[this.index] = ve;
    this.index ++;
    };

    inputContainer.prototype.IsValidate = function ()
    {
    var j = 0;
    for (i = 0; i < this.inputs.length; ++i)
    {
    if (!this.inputs[i].IsValidate())
    {
    this.ErrorsMsg[j] = this.inputs[i].getErrMsg();
    ++j;
    this.Validate = false;
    }
    }
    return this.Validate;
    };

    inputContainer.prototype.getErrMsg = function()
    {
    var Message = "";
    for (i = 0; i < this.ErrorsMsg.length; ++i)
    {
    if (this.ErrorsMsg[i] == null)
    {
    break;
    }

    Message = Message + "\n" + this.ErrorsMsg[i];
    }
    alert(Message);
    };
    function loading()
    {
    alert("loading");
    }
    function test()
    {
    var ve1 = new ValidateElement("text1", document.forms[0].text1.value, "IsNull", 0);
    var ve2 = new ValidateElement("text2", document.forms[0].text2.value, "DateTime", 0);
    var container = new inputContainer(2);
    container.Add(ve1);
    container.Add(ve2);
    if (!container.IsValidate())
    container.getErrMsg();
    }
    </script>
    //页面代码
    <body onload="loading();">
    <form id="Form1" method="post" runat="server">
    <INPUT id="text1" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 168px" type="text"><INPUT id="text2" style="Z-INDEX: 102; LEFT: 112px; POSITION: absolute; TOP: 216px" type="text"><INPUT style="Z-INDEX: 103; LEFT: 144px; POSITION: absolute; TOP: 272px" type="button"
    value="Button" onclick="test()">
    </form>
    </body>
      

  3.   

    htm文件头上放置页面编码信息<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      

  4.   

    htm 或 asp 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">jsp
    <%@ page language="java" contentType="text/html; charset=gb2312"%> 
      

  5.   

    谢谢大家的回复,但是
    还是不行,js文件中的输出的中文还是乱码,还有我举个例子:我写了4个javascript方法,2个放在js文件中,另外2个放在页面中,那么放在页面的方法就无法执行。