读书人

跪求帮小弟我解决此有关问题报错:I

发布时间: 2012-09-11 10:49:03 作者: rapoo

跪求各位高手帮我解决此问题,报错:ID/NAME 所引用的元素位于全局范围。请使用 W3C 的标准形式 document.getElementB
下面贴代码

HTML code
<td noWrap width="20%">    <div>    <textarea  id="msgContentArea" rows="15" cols="40"    onPropertyChange="javascript:setMsg();"></textarea><span><font color="red">*</font></span>    </div></td><th><app:i18n key="page.9.wordcount"/>:</th>    <td colspan="2">    <font color="red"><app:SmsContextTag form="PolicyFormBean" formfield="msgPreview" /> </font></td>


js代textare中的值取到,在後判,在回前
JScript code
        function setMsg(){            //获取短信内容和签名状态            var previewMsg = "";            var msgContentArea=$("#msgContentArea");            previewMsg += msgContentArea.val();            var nameFlagObjs = document.getElementsByName("nameFlag");            var nameFlag = false;            var userName = "";            if(nameFlagObjs[1].checked){                nameFlag = true;                userName = document.getElementsByName("currentName")[0].value;            }            if(nameFlag)                previewMsg += "[" + userName + "]";            if(msgContentArea.val()=="")                previewMsg = "";            [color=#FF0000]PolicyFormBean.msgPreview.value[/color] = previewMsg;        }



後程序
Java code
        System.out.println(longsmsenglishlength);        System.out.println(longsmschineselength);        StringBuffer sb = new StringBuffer();        sb.append("<script language=\"javascript\">\n");        sb.append("var submitflag = false;\n");        sb.append("function checkSmsContext(send_content){\n");                        //sb.append("alert(send_content);");                sb.append("var strlength=0;\n");        sb.append("var iList=0;\n");        sb.append("var maxlengths=134;\n");        sb.append("var firstmax=140;\n");        sb.append("send_content = send_content.replaceAll('\\r','');\n");                //sb.append("alert(send_content);");                sb.append("if( isChinese( send_content ) ){\n");        sb.append("firstmax=140;\n");        sb.append("strlength = send_content.length * 2;\n");        sb.append("}else{\n");        sb.append("firstmax=140;\n");        sb.append("strlength = send_content.length;\n");        sb.append("} \n");        sb.append("if( strlength<=firstmax ){\n");        sb.append("iList=1;");        sb.append("}else{\n");        sb.append("if( strlength%maxlengths==0 ){\n");        sb.append("iList = parseInt( strlength/maxlengths );\n");        sb.append("}else{\n");        sb.append("iList = parseInt( strlength/maxlengths ) + 1;\n");        sb.append("}\n");        sb.append("}\n");        sb.append("if(strlength >800){\n");        sb.append("submitflag=false;}\n");        sb.append("else{\n");        sb.append("submitflag=true;\n");        sb.append("}\n");                        sb.append("document.getElementsByName(\"sms_contextlimit\")[0].innerHTML=\" " + ResourceLoad.getValueByKey("public.messagemaxlength") + " \"+"                + longsmsenglishlength + "+ \" " + ResourceLoad.getValueByKey("public.byte") + ".\"+\n\""                 + ResourceLoad.getValueByKey("public.hadinput") + "\"+strlength+\" " + ResourceLoad.getValueByKey("public.byte")                + "," + ResourceLoad.getValueByKey("public.devided") + " \"+iList+\" " + ResourceLoad.getValueByKey("public.item") + " "                + ResourceLoad.getValueByKey("public.send") + ".<br>" + ResourceLoad.getValueByKey("public.onlyreference") + "\"; }\n");                                sb.append("\n");        sb.append("String.prototype.replaceAll = function(s1,s2) { \n");        sb.append("return this.replace(new RegExp(s1,\"gm\"),s2);  \n");        sb.append("}\n");                                [color=#FF0000]        sb.append("setInterval(function(){checkSmsContext(" + form + "." + formfield                    + ".value) },1000);\n ");[/color]                sb.append("function isChinese(str){\n");        sb.append("iLength = str.length;\n");        sb.append("for(i=0;i<iLength;i++){\n");        sb.append("var tmp_code = str.substring(i,i+1).charCodeAt(); \n");        sb.append("if( tmp_code> 0xff ){\n");        sb.append("return true;\n");        sb.append("}\n");        sb.append("}\n");        sb.append("return false;\n");        sb.append("}\n");                sb.append("</script>\n");        sb.append("\n");        sb.append("<div id=\"sms_contextlimit\" name=\"sms_contextlimit\" class=\"STYLE3\"/>\n");        return sb.toString(); 



在ie下是可以的 sb.append("setInterval(function(){checkSmsContext(" + form + "." + formfield
+ ".value) },1000);\n ");

也就是
PolicyFormBean.msgPreview.value

可safari,chrome,ff都不行 id位於全局,是什麽情

很急,大家

[解决办法]
试试:document.getElementById("msgPreview").value

或者:
HTML code
        sb.append("function checkSmsContext(o){\n");       sb.append("var send_content=document.getElementById(\"o\").value");                //sb.append("alert(send_content);");                sb.append("var strlength=0;\n");
[解决办法]
HTML code
sb.append("setInterval(function(){checkSmsContext('" + formfield+ "') },1000);\n ");
[解决办法]
HTML code
 sb.append("function checkSmsContext(o){\n");       sb.append("var send_content=document.getElementById(o).value");                //sb.append("alert(send_content);");                sb.append("var strlength=0;\n");
[解决办法]
修改了两个地方
1:计时器中传参为formfield
2:checkSmsContext变更参数为:formfield,
将你原有的参数:send_content变更为:var send_content=document.getElementById(formfield).value去获取值

你把整个服务器解析后生成的完整HTML贴出来就知道了,我在你贴的代码里没有看到msgPreview在哪里

读书人网 >JavaScript

热点推荐