跪求各位高手帮我解决此问题,报错: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在哪里