当前位置: 代码迷 >> Web前端 >> 自个儿的一些笔记
  详细解决方案

自个儿的一些笔记

热度:399   发布时间:2012-11-23 00:03:43.0
自己的一些笔记

1、$("#id").html("你好!");

2、jquery对象和dom对象
?? jquery对象-->dom对象? jquery对象是个数组对象 可以使用jquery库的特有方法
???????????????????????? var $cr = $("#cr");? var cr = $cr[0];
???????????????????????? var $cr = $("#cr");? var cr = $cr.get(0);
?? dom对象-->jquery对象
???????????????????????? var cr = document.getElementById("cr");
???????????????????????? var $cr = $(cr);
3、低级错误啊:
?? 取一个节点的html是忘记加()
?? $("#id").html();

4、低级错误2
?? 所有的jquery代码必须写在下面的
??
?? $(document).ready(function() {..some code...} );
?? $().ready(function() {..some code...} );
?? $(function() {..some code...} );

5、var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。

6、prev()前一个同辈节点
?? next()后一个同辈节点
?? slice(start,end) 筛选
?? parent()父节点
?? children()子节点
7、IE 和 FF下的radio
?? $("input[name='radioName'][checked]").val();
?? 但是FF取不到你点击另外一个后的值,只能取到你设置的默认的值
?? 可以这样写
?? $("input[name='radioName']:checked").val();?
?? demo里面可以,不知道为什么工程里面就不行了
?? var searchType = $('input[type=radio]:checked').val();
?? 这样子工程里面可以的
8、display : none;隐藏属性
?? display :block 是块状显示 在firefox中会影响布

9、 jquery 赋值语句很少? 都是譬如 $("#222").attr("value","asfs");

10、appendto 把所有匹配的元素追加到另一个指定的元素元素集合中。
??? 所有匹配的元素肯定就没有了

1 楼 caiyingying234 2012-04-09  
11、$("#Span1").replaceWith("<span title='replaceWith'>陶国荣</span>");
    $("<span title='replaceAll'>tao_guo_rong@163.com</span>").replaceAll("#Span2");

12、siblings()取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合。可以用可选的表达式进行筛选
13、动态的效果:
    slideUp(speed,[callback])
           $("p").slideUp("fast",function(){
              alert("Animation Done.");
              });
    slideDown(speed,[callback])

   show(speed,[callback])
   hide(speed,[callback])
   fadeIn(speed,[callback])
   fadeOut(speed,[callback])
   fadeTo(speed, opacity, [callback]) opacity 调整的不透明度(0-10)
   animate()自定义动画
14、判读对象是否是隐藏的  if($("#main-fl").is(":hidden")) {    }



15、vertical-align 属性设置元素的垂直对齐方式。
   可能的值
   值 描述
   baseline 默认。元素放置在父元素的基线上。  
   sub 垂直对齐文本的下标。
   super 垂直对齐文本的上标
   top 把元素的顶端与行中最高元素的顶端对齐
   text-top 把元素的顶端与父元素字体的顶端对齐
   middle 把此元素放置在父元素的中部。
   bottom 把元素的顶端与行中最低的元素的顶端对齐。
   text-bottom 把元素的底端与父元素字体的底端对齐。
   length  
   % 使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
   inherit 规定应该从父元素继承 vertical-align 属性的值。

16、tr不用设置width
   td float属性无用  

17、 jsp验证码刷新
JSPJavaScriptIDEA.Js代码 
     1. 直接点击验证码,刷新验证码   
具体代码   
Javascript的一个函数   
<script language="javascript">   
/*验证码上刷新 */   
function chk_image(){   
var img = document.getElementById("pic");   
img.src = "image.jsp?" + Math.random();   
}   
</script>   
/*图片调用 */   
<img id="pic" border=1 src="image.jsp?Math.random();" onclick="return chk_image();" alt="30">   
  
     2. 通过点击文字链接,刷新验证码   
<script language="javascript">   
/*在文字上使验证码刷新 */   
function reloadImage(url)   
{   
var img = document.getElementById("pic");   
img.src = url+"?" + Math.random();   
  
}   
</script>   
<img id=”pic” src=”image.jsp”>   
<a href="javascript:reloadImage(''image.jsp'');">验证码看不清,重新获得</a> 
2 楼 caiyingying234 2012-04-09  
18、//屏蔽按键:只允许输入数字、#、*
function checkNumValid(evt)
{
var keycode = evt.keyCode||event.charCode;
//只允许输入数字和符号               
if(window.event)//IE
{
  if (evt.shiftKey)
  {
   if (51 == keycode //shift + 3 = #
    || 56 == keycode //shift + 8 = *
    || keycode == 35 //end
    || keycode == 36 //home
    || keycode == 37 //←
    || keycode == 39 //→
    )
   {
    return true;
   }
  }
  else if ((keycode >= 48 && keycode <= 57)
     || (keycode >= 96 && keycode <= 105)
     || keycode == 46 //delete
     || keycode == 8 //backspace
     || keycode == 9 //tab键
     || keycode == 35 //end
     || keycode == 36 //home
     || keycode == 37 //←
     || keycode == 39 //→
     || keycode == 106 //小键盘 *
     )
  {
   return true;
  }
}
evt.returnValue = false;
return false;
}

19、最近的工作中,接触JS的比较多,碰到个文本框不能拖动选择的问题
发现原来是增加了一个函数
document.onselectstart = function(event) {return false};

那么页面上的所有的选择事件将失效。
譬如我们可以指定哪些是不能选定的
document.onselectstart= function(event){return test()};

function test(){
var the = event.srcElement ;
if( !( ( the.tagName== "INPUT" && the.type.toLowerCase() == "text" ) || the.tagName== "TEXTAREA" ) )
{
return false;
}
return true ;

}

20、

20-1、获得浏览器的locale

Locale locale = ServletActionContext.getRequest().getLocale();



20-2、禁用回车键

onkeydown="if(window.event.keyCode == 13)return false;"



20-3、限制不可以输入字符

onkeypress="if (!/[0-9#*\/\-]/.test(String.fromCharCode(event.keyCode)))event.keyCode=0"

onkeyup="this.value=this.value.replace(/[^\d#*\/\-]/g,'')"



20-4、Eclipse 中更改默认编码

Preferences--General--Content Types
3 楼 caiyingying234 2012-04-09  
24、中文字符

function istaobaoValidLength(str , rule)
{

var p1 = new RegExp('%u..', 'g');
var p2 = new RegExp('%.', 'g');
var strSize = escape(str).replace(p1, '').replace(p2, '').length;
    if(strSize>rule){
        return false;
    }
    return true;
}


function istaobaoValidLength(str , rule)
{

var p1 = new RegExp('%u..', 'g');
var p2 = new RegExp('%.', 'g');
var strSize = escape(str).replace(p1, '').replace(p2, '').length;
    if(strSize>rule){
        return false;
    }
    return true;
}
4 楼 caiyingying234 2012-04-09  
25、1、查看数据库字符集:
   SQL>select userenv(‘language’) from dual;


2、tnsnames.ora详解~~还少点,关于外部过程代理程序的
分类: oracle 2011-07-27 20:37 18人阅读 评论(0) 收藏 举报
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.




SUN =      # 网络服务名,客户端会通过相应的网络服务名连接到目标数据库
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))      
  # TCP是连接协议,HOST 客户端要连接的目标主机地址,PORT目标数据库的监听端口号
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)  
   # 连接类型,DEDICATED 专用服务器模式 为每个用户的连接使用专用的服务进程,
   # SHARED 共享服务器模式 ,dispatcher进程把用户连接请求放到 request queue,
   # 然后为连接请求分配shared process,请求完成后会被服务进程放到response queue,
   # dispatcher在把结果发给用户请求。
   # 注意即使在SHARED SERVER模式下,每个用户请求也使用自己独立的PGA,所以PGA导致
   # SHARED SERVER的优势减弱。DEDICATED和SHARED模式是可以共存的,因为STARTUP和
   # SHUTDOWN必须在DEDICATED模式下运行
     
  (SERVICE_NAME = sun)
   # SERVICE_NAME 服务名是目标数据库的SID
    )
  )


EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
  # IPC 进程间通信协议,就是说是本机之间的进程间的通信,调用本地连接
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )


26、tomcat启动时候闪了一下,启动不了的问题:
   原因可能是:jdk没有配置好
   配置JAVA_HOME
   JAVA_HOME指向应该是jdk的路径,而不应该是jre的路径

27、oracle监听启不来
   今天出现了个小问题:启动Oracle 10g的监听服务后,监听自动关闭。
        上网查询原因:是因为修改了计算机名称,导致出现这个错误,
        把目录{Oracle}/product/10.2.0/db_1/network/ADMIN下的文件listener.ora内容进行修改,
        将“HOST”修改成现在的机器名,然后重新启动监听服务,Oracle正常使用
5 楼 caiyingying234 2012-04-09  
28、获得所有的tag节点
function getElements()
  {
  var temp = document.getElementById("testDiv");
  var x=document.getElementById("testDiv").getElementsByTagName("*");
  for(var i=0;i<x.length;i++){
  alert(x[i].name);
  if(x[i].type == "text"){
  x[i].name = x[i].name +"_"+i;
  }
  alert(x[i].name);
  }
  }
6 楼 caiyingying234 2012-04-09  
29、//对收到的信息过滤所有的event
function filterProps(originalText)
{
var tempStyle = "";
var divTemp = document.createElement("div");
divTemp.innerHTML = String(originalText);

//清除DOM和脚本之间的引用
var clearElementProps = [
'onsubmit',
    'onchange',
        'onabort',
    'onactivate',
    'onafterupdate',
    'onbeforeactivate',
    'onbeforecopy',
    'onafterprint',
    'onbeforecut',
    'onbeforedeactivate',
    'onbeforeeditfocus',
    'onbeforepaste',
    'onbeforeprint',
    'onbeforeupdate',
    'onbeforeunload',
    'onblur',
    'onbounce',
    'oncellchange',
    'onclick',
    'oncontextmenu',
    'oncontrolselect',
    'oncopy',
    'oncut',
    'ondataavailable',
    'ondatasetchanged',
    'ondatasetcomplete',
    'ondblclick',
    'ondeactivate',
    'ondrag',
    'ondragend',
    'ondragenter',
    'ondragleave',
    'ondragover',
    'ondragstart',
    'ondrop',
    'onerror',
    'onfinish',
    'onerrorupdate',
    'onfilterchange',
    'onfocus',
    'onfocusin',
    'onfocusout',
    'onhelp',
    'onkeydown',
    'onkeypress',
    'onkeyup',
    'onload',
    'onstart',
    'onlayoutcomplete',
    'onlosecapture',
    'onmousedown',
    'onmouseenter',
    'onmouseleave',
    'onmousemove',
    'onmouseout',
    'onmouseover',
    'onmouseup',
    'onmousewheel',
    'onmove',
    'onmoveend',
    'onmovestart',
    'onpaste',
    'onreset',
    'onpropertychange',
    'onrowenter',
    'onrowexit',
    'onrowsdelete',
    'onrowsinserted',
    'onreadystatechange',
    'onresize',
    'onresizeend',
    'onresizestart',
    'onscroll',
    'onselectionchange',
    'onselectstart',
    'onselect',
    'onstop',
    'onunload',
    'ontimeerror'
];
//递归遍历dom节点
function filter(n)
{
//如果节点是元素节点
if(n.nodeType == 1){
for (var c = 0; c < clearElementProps.length; c++)
{
var tempEvent = clearElementProps[c];
    if (null != n.getAttribute(tempEvent))
    {
n.setAttribute(tempEvent,"");
}

}

}
var tempChildren = n.childNodes;
if(tempChildren.length > 0){
for(var i=0;i<tempChildren.length;i++){
filter(tempChildren[i])
}
}
return ;
  }
  //递归开始
filter(divTemp);

//发送内容中的input元素设置为只读 type=submit 改为button显示
for (var i = 0; i < divTemp.getElementsByTagName("input").length; i++)
{
divTemp.getElementsByTagName("input")[i].setAttribute("readOnly","readOnly");
if ("submit" == divTemp.getElementsByTagName("input")[i].getAttribute("type"))
{
var tempInputObj = divTemp.getElementsByTagName("input")[i];
tempInputObj.outerHTML = tempInputObj.outerHTML.replace(/submit/g, "button");
}
}
var strRtn = tempStyle + String(divTemp.innerHTML);
return strRtn;
}
7 楼 caiyingying234 2012-04-09  
   //解决样式丢失问题
var tempStyle = "";

//存在多个<style>标签时,提取样式 
var tempHtmlProtect = originalText;
while (-1 != tempHtmlProtect.indexOf("<style>")
&& -1 != tempHtmlProtect.indexOf("</style>"))
{
var tStyle = tempHtmlProtect.substring(tempHtmlProtect.indexOf("<style>"), tempHtmlProtect.indexOf("</style>") +;
tempStyle = tempStyle + tStyle;
tempHtmlProtect = tempHtmlProtect.replace(tStyle, "");
}
//解决object注入
//originalText = originalText.replace(/<object(.|\n)*\/object>\s*/ig, "<!-- -->");
originalText = originalText.replace(/<object/ig, "<!--<object");
originalText = originalText.replace(/<\/object>/ig, "</object>-->");

//解决iframe注入
//originalText = originalText.replace(/<iframe(.|\n)*\/iframe>\s*/ig, "<!-- -->");
originalText = originalText.replace(/<iframe/ig, "<!--<iframe");
originalText = originalText.replace(/<\/iframe>/ig, "</iframe>-->");

//解决script注入
//originalText = originalText.replace(/<script(.|\n)*\/script>\s*/ig, "");
originalText = originalText.replace(/<scrip/ig, "<!--<script");
originalText = originalText.replace(/<\/script>/ig, "</script>-->");

//过滤复制的副本中jquery标识
originalText = originalText.replace(/ jQuery\d+="(?:\d+|null)"/g, "");
var divTemp = document.createElement("div");
divTemp.innerHTML = String(originalText);
//强制链接在新窗口中打开
//divTemp.innerHTML = divTemp.innerHTML.replace(/\<a/i, "<A target='_blank'");
    //divTemp.innerHTML = Dvbbs_correctUrl(String(divTemp.innerHTML));


//发送内容中的input元素设置为只读 type=submit 改为button显示
for (var i = 0; i < divTemp.getElementsByTagName("input").length; i++)
{
divTemp.getElementsByTagName("input")[i].setAttribute("readOnly","readOnly");
if ("submit" == divTemp.getElementsByTagName("input")[i].getAttribute("type"))
{
var tempInputObj = divTemp.getElementsByTagName("input")[i];
tempInputObj.outerHTML = tempInputObj.outerHTML.replace(/submit/g, "button");
}
}

//过滤链接在新窗口中打开

for (var i = 0; i < divTemp.getElementsByTagName("a").length; i++)
{
divTemp.getElementsByTagName("a")[i].target = "_blank";
}
8 楼 caiyingying234 2012-04-09  
//IE的情况
if(isIE()){
ifrm.attachEvent("onreadystatechange",function(){
if(ifrm.contentWindow.document.readyState == 'complete'){
ifrm.contentWindow.document.documentElement.attachEvent("onpaste", function(e){return pasteClipboardData(ifrm.id,e);});
}
});
}
else{
ifrm.addEventListener("load",function(){
ifrm.contentWindow.document.addEventListener("paste", function(e){return pasteClipboardData(ifrm.id,e);},false);
}
},false);
}
9 楼 caiyingying234 2012-04-10  
Js编码函数区别
                 ――特殊符号处理

在web开发中经常遇到特殊符号处理的问题,如处理不好,常常引起异常,在前台Js中表现尤为明显。在开发中处理特殊符号时,用到并总结了Js几个特殊符号处理函数的区别。对其了解还是非常有意义的,特总结如下:

Js对文字进行编码涉及3个函数:escape, encodeURI, encodeURIComponent
相应3个解码函数:unescape, decodeURI, decodeURIComponent

一、函数简介
1、encodeURIComponent
传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                                                        
    例如: <script   language= "javascript "> document.write( ' <a   href= "http://passport.baidu.com/?logout&aid=7&u=   +encodeURIComponent( "http://cang.baidu.com/bruce42 ")+ "> 退出 </a> '); </script>
2、encodeURI
进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI( "http://cang.baidu.com/do/s?word=百度&ct=21 ");
3、escape
js使用数据时可以使用escape
例如:收藏中history纪录。

二、区别
escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。

    最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

? 处理符号范围
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&, ',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!,   ',(,),*,-,.,_,~,0-9,a-z,A-Z
三、总结
以上3个函数,编码最多的是escape,但仍有7个符号没有编码,在BNB Agent开发中采用人工替换编码的方式实现,解决了不少问题。这种处理方式之所以可行,是解码函数unescape, decodeURI, decodeURIComponent对所有字符均可解码。
在后台Java处理中,采用同样原理实现。

附:7个特殊符号编码对照表

@ "%40"
* "%2A"
+ "%2B"
- "%2D"
. "%2E"
/ "%2F"
_ "%5F"
10 楼 caiyingying234 2012-04-10  
前台性能测试:
1、日志:
  console.log();
  console.debug();
  console.warn();
  console.error();
  console.info();
2、性能的三种方法:
   一、点击概况,再次点击 会收集这期间的概况
   二、代码中写 console.profile();
                console.profileEnd();
       也可以在命令行输入 profile
   三、在代码中输入:
       console.profile('Measuring time');     
       doSomething();     
       console.profileEnd();
      会打印出相应的详细信息
3、IE中可以使用
      <SCRIPT>
var bResult;
// 选中要剪切的文本。在剪切事件中文本选中区的尾随空格导致剪
// 切选快捷菜单项目保持无效。
function fnLoad() {
var r = document.body.createTextRange();
r.findText(oSource.innerText);
r.select();
}
// 启用剪切快捷菜单项目,该项目在 DIV 上时默认为无效
function fnBeforeCut() {
event.returnValue = false;
}
// 以文本格式给 window.clipboardData 对象赋予数据。
// 将 setData 方法的结果 (Boolean) 显示在下面的输入框内。
function fnCut(){
event.returnValue = false;
bResult = window.clipboardData.setData("Text",oSource.innerText);
oSource.innerText = "";
tText.innerText += bResult;
}
// 启用粘贴快捷菜单项目,该项目在 DIV 上时默认也为无效
function fnBeforePaste() {
event.returnValue = false;
}
// 在 onpaste 中取消 returnValue 以便输入文本,该操作有默认
// 的行为。
function fnPaste() {
event.returnValue = false;
oTarget.innerText = window.clipboardData.getData("Text");
}
</SCRIPT>
</HEAD>
<BODY onload="fnLoad()" TOPMARGIN=0 LEFTMARGIN=0 BGPROPERTIES="fixed" BGCOLOR="#FFFFFF"
LINK="#000000" VLINK="#808080" ALINK="#000000">
<DIV CLASS="clsSource" ID="oSource" onbeforecut="fnBeforeCut()" oncut="fnCut()">选中并剪切此文本</DIV>
<DIV CLASS="clsTarget" ID="oTarget" onbeforepaste="fnBeforePaste()" onpaste="fnPaste()">将文本粘贴在这里</DIV><BR>
<SPAN CLASS="clsData">setData 结果:</SPAN>
<INPUT CLASS="clsText" ID="tText" TYPE="text" READONLY VALUE="" SIZE="6" TABINDEX="-1">
</BODY>

  相关解决方案