标签归档:htm

innerHTML 和 pasteHTML 区别

innerHTML 是一个属性 ,可以取得或者设定该元素内的 HTML 内容,可以是任意能包含 HTML 子节点的元素都使用它

pasteHTML() 是一个方法 ,在指定的文字区域内替换该区域内的文本或者HTML,该方法必须应用于一个 createTextRange() 或者 document.selection.createRange() 创建的区域上
例:

<Script Language=”JavaScript”>
       function addLink(){
          var oRange = document.selection.createRange();
          if(oRange.text!=”){
             var oUrl = window.prompt(‘链接网址…’,’https://www.nopost.cn/’);
             var oHtml = ‘<a href=’+oUrl+’ target=_blank>’+oRange.text+'</a>’;
             oRange.pasteHTML(oHtml);
          }else{
             window.alert(‘您没有选择加链接的文字!’);
          }

DOM常用操作

1、获取对象
document.getElementById(ID)
//获得指定ID值的对象
document.getElementsByName(Name)
//获得指定Name值的对象数组,常用获取radio,checkbox

2、坐标
var oRect=obj.getBoundingClientRect();
x=oRect.left
y=oRect.top

3、获取窗口大小,分辨率
Java代码
document.body.clientWidth    
document.body.clientHeight    
  获得窗口大小(包含Border、Scroll等元素)    
  document.body.offsetWidth    
  document.body.offsetHeight  
 
分辨率  
creen.width,creen.height.  
具体解释如下:  
 
scrollWidth是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际宽度)   
clientWidth是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。  
offsetWidth是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。  
scrollHeight: 获取对象的滚动高度。  
offsetHeight:获取对象相对于版面或由父坐标    
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离  
offsetLeft:获取对象相对于版面或由  
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离  
offsetTop 属性指定的父坐标的计算顶端位置  
offsetParent 属性指定的父坐标的高度  
offsetParent 属性指定的父坐标的计算左侧位置  
event.clientX 相对文档的水平座标  
event.clientY 相对文档的垂直座标  
event.offsetX 相对容器的水平坐标  
event.offsetY 相对容器的垂直坐标  
document.documentElement.scrollTop 垂直方向滚动的值 event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量     
以上主要指IE之中,FireFox差异如下:  
IE6.0、FF1.06+:  
clientWidth = width + padding clientHeight = height + padding  
offsetWidth = width + padding + border  
offsetHeight = height + padding + border  
IE5.0/5.5:  
clientWidth = width – border  
clientHeight = height – border  
offsetWidth = width  
offsetHeight = height   
 
例:如页面过长,想让id=”view1″的节点显示出来。  
var currentDom=document.getElementById(“view1”).getBoundingClientRect();  
            if(currentDom.top>window.document.body.clientHeight){  
                window.document.body.scrollTop=currentDom.top;  
            } 

document.body.clientWidth 
document.body.clientHeight 
  获得窗口大小(包含Border、Scroll等元素) 
  document.body.offsetWidth 
  document.body.offsetHeight

分辨率
creen.width,creen.height.
具体解释如下:

scrollWidth是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际宽度)
clientWidth是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。
offsetWidth是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。
scrollHeight: 获取对象的滚动高度。
offsetHeight:获取对象相对于版面或由父坐标 
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
offsetLeft:获取对象相对于版面或由
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
offsetTop 属性指定的父坐标的计算顶端位置
offsetParent 属性指定的父坐标的高度
offsetParent 属性指定的父坐标的计算左侧位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值 event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量   
以上主要指IE之中,FireFox差异如下:
IE6.0、FF1.06+:
clientWidth = width + padding clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
IE5.0/5.5:
clientWidth = width – border
clientHeight = height – border
offsetWidth = width
offsetHeight = height

例:如页面过长,想让id=”view1″的节点显示出来。
var currentDom=document.getElementById(“view1”).getBoundingClientRect();
    if(currentDom.top>window.document.body.clientHeight){
     window.document.body.scrollTop=currentDom.top;
    }
4、dom加载顺序

1.HTML解析完毕
2.外部脚本和样式表加载完毕
3.脚本在文档内解析并执行
4.HTML DOM完全构造起来
5.图片和外部内容加载
6.网页完成加载
监听DOM加载状态

 

这项技术在不堵塞浏览器加载的情况下尽可能快地检查HTML DOM文档是否已经加载了执行所必须的属性。

document

document.getElementById

document.getElementsByTagName

document.body

检查这几个对象可以获知DOM的加载状态

 

以下代码监听DOM何时加载完毕(来自《精通JavaScript》)

Java代码

Java代码
function domReady(func) {  
    // 假如DOM已经加载,马上执行函数  
    if (domReady.done) return func();  
      
    // 假如我们已经增加了一个函数  
    if (domReady.timer) {  
        // 把它加入到待执行函数清单中  
        domReady.ready.push(func);  
    }  
    else {  
        // 为页面加载完毕绑定一个事件以防止它最先完成。使用addEvent函数  
        // addEvent函数为由Dean Edwards编写的著名函数  
        addEvent(window, “load”, isDOMReady );  
          
        // 初始化待执行函数的数组  
        domReady.ready[ func ];  
          
        // 尽可能快地检查DOM是否已可用  
        domReady.timer = setInterval(isDOMReady, 13);  
    }  
};  
 
//检查DOM是否已可操作  
function isDOMReady() {  
    // 如果我们能判断出DOM已可用,忽略  
    if (domReady.done) return false;  
      
    // 检查若干函数和元素是否可用  
    if (document && document.getElementsByTagName && document.getElementById && document.body) {  
        // 如果可用,我们可以停止检查  
        clearInterval(douReady.timer);  
        domReady.timer = null;  
          
        // 执行所有正等待的函数  
        for (var i = 0; i < domReady.ready.length; i++)  
            domReady.ready[i]();  
              
        // 记录我们在此已经完成  
        domReady.ready = null;  
        domReady.done = true;  
    }  

function domReady(func) {
    // 假如DOM已经加载,马上执行函数
    if (domReady.done) return func();
   
    // 假如我们已经增加了一个函数
    if (domReady.timer) {
        // 把它加入到待执行函数清单中
        domReady.ready.push(func);
    }
    else {
        // 为页面加载完毕绑定一个事件以防止它最先完成。使用addEvent函数
        // addEvent函数为由Dean Edwards编写的著名函数
        addEvent(window, “load”, isDOMReady );
       
        // 初始化待执行函数的数组
        domReady.ready[ func ];
       
        // 尽可能快地检查DOM是否已可用
        domReady.timer = setInterval(isDOMReady, 13);
    }
};

//检查DOM是否已可操作
function isDOMReady() {
    // 如果我们能判断出DOM已可用,忽略
    if (domReady.done) return false;
   
    // 检查若干函数和元素是否可用
    if (document && document.getElementsByTagName && document.getElementById && document.body) {
        // 如果可用,我们可以停止检查
        clearInterval(douReady.timer);
        domReady.timer = null;
       
        // 执行所有正等待的函数
        for (var i = 0; i < domReady.ready.length; i++)
            domReady.ready[i]();
           
        // 记录我们在此已经完成
        domReady.ready = null;
        domReady.done = true;
    }
}
5、增加对象
Java代码
/*创建新层*/ 
var div_view=document.createElement(“div”);  
也可这样创建 document.createElement(“<div></div>”);  
设置样式:div_view.className=””;  
设置ID:div_view.id=”div1″;  
设置div显示内容:div_view.innerHTML=”test”;  
innerHTML即div里的内容。例<div id=”div1″>test1</div>,div1.innerHTML则是”test1″ 
outerHTML则是整个div。例div1.outerHTMl是”<div id=div1>test1</div>”.  
注意,innerHTML和outerHTML均会把”,’去掉。  
/*创建table,插入行,列*/ 
var table=document.createElement(“table”);  
var trow=table.insertRow();插入行到最后。  
var trow=table.insertRow(1);插入到第2行。  
var rowLength=table.rows.length;获取table的总行数  
var tcell=row.insertCell();插入一列  
tcell.innerHTML=”insert row”;设置列内容  
其他的创建方式类似。  
document.body.appendChild(div_view);把层添加到body中,这样才会在页面中显示增加的层。 

/*创建新层*/
var div_view=document.createElement(“div”);
也可这样创建 document.createElement(“<div></div>”);
设置样式:div_view.className=””;
设置ID:div_view.id=”div1″;
设置div显示内容:div_view.innerHTML=”test”;
innerHTML即div里的内容。例<div id=”div1″>test1</div>,div1.innerHTML则是”test1″
outerHTML则是整个div。例div1.outerHTMl是”<div id=div1>test1</div>”.
注意,innerHTML和outerHTML均会把”,’去掉。
/*创建table,插入行,列*/
var table=document.createElement(“table”);
var trow=table.insertRow();插入行到最后。
var trow=table.insertRow(1);插入到第2行。
var rowLength=table.rows.length;获取table的总行数
var tcell=row.insertCell();插入一列
tcell.innerHTML=”insert row”;设置列内容
其他的创建方式类似。
document.body.appendChild(div_view);把层添加到body中,这样才会在页面中显示增加的层。

6、frame
window.frames[“frameName”]获取frame的window对象
7、select
Java代码
当前选中的option:select.options[select.selectedIndex]  
所有options:select.options.返回的是option[]数组  
增加option  
方法1:option1=new Option(text,value);  
      select.add(option1);  
方法2:option2=document.createElement(“option”);  
       option2.value=value;  
       option2.text=text;  
      select.add(option2);  
删除option  
      select.remove(option1);  
删除所有option  
      select.options.length=0;

Javascript常用的一些小技巧

 

1. oncontextmenu=”window.event.returnValue=false” 将彻底屏蔽鼠标右键
    <table border oncontextmenu=return(false)><td>no</table> 可用于Table

2. <body onselectstart=”return false”> 取消选取、防止复制

3. onpaste=”return false” 不准粘贴

4. oncopy=”return false;” oncut=”return false;” 防止复制

5. <link rel=”Shortcut Icon” href=”favicon.ico”> IE地址栏前换成自己的图标

6. <link rel=”Bookmark” href=”favicon.ico”> 可以在收藏夹中显示出你的图标
7. <input style=”ime-mode:disabled”> 关闭输入法
8. 永远都会带着框架
 

 程序代码
<script language=”JavaScript”><!–
if (window == top)top.location.href = “frames.htm”; //frames.htm为框架网页
// –></script>
9. 防止被人frame
 

 程序代码
<SCRIPT LANGUAGE=JAVASCRIPT><!–
if (top.location != self.location)top.location=self.location;
// –></SCRIPT>
10. 网页将不能被另存为
<noscript><*** src=”/*.html>”;</***></noscript>
11. <input type=button value=”/查看网页源代码
 

 程序代码
onclick=”window.location = “view-source:”+ http://www.nopost .com”>

12. 删除时确认
 

 程序代码
<a href=””javascript :if(confirm(“确实要删除吗?”))location=”boos.asp?&areyou=删除&page=1″”>删除</a>
13. 取得控件的绝对位置
 

 程序代码
//Javascript
<script language=”Javascript”>
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert(“top=”+t+”/nleft=”+l);
}
</script>
//VBScript
<script language=”VBScript”><!–
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>”BODY”
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox “top=”&t&chr(13)&”left=”&l,64,”得到控件的位置”
end function
–></script>
14. 光标是停在文本框文字的最后
 

 程序代码
<script language=”javascript”>
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(“character”,e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value=”123″ onfocus=”cc()”>

15. 判断上一页的来源
javascript :
document.referrer
16. 最小化、最大化、关闭窗口
 

 程序代码
<object id=hh1 classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″>
<param name=”Command” value=”Minimize”></object>
<object id=hh2 classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″>
<param name=”Command” value=”Maximize”></object>
<OBJECT id=hh3 classid=”clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11″>
<PARAM NAME=”Command” value=”/Close”></OBJECT>
<input type=button value=”/最小化 onclick=hh1.Click()>
<input type=button value=”/blog/最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE
17.屏蔽功能键Shift,Alt,Ctrl
 

 程序代码
<script>
function look(){
if(event.shiftKey)
alert(“禁止按Shift键!”); //可以换成ALT CTRL
}
document.onkeydown=look;
</script>

 

18. 网页不会被缓存
 

 程序代码
<META HTTP-EQUIV=”pragma” CONTENT=”no-cache”>
<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache, must-revalidate”>
<META HTTP-EQUIV=”expires” CONTENT=”Wed, 26 Feb 1997 08:21:57 GMT”>
或者<META HTTP-EQUIV=”expires” CONTENT=”0″>
19.怎样让表单没有凹凸感?
 

 程序代码
<input type=text style=”””border:1 solid #000000″>

<input type=text style=”border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000″></textarea>
20.<div><span>&<layer>的区别?
<div>(division)用来定义大段的页面元素,会产生转行
<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行
<layer>是ns的标记,ie不支持,相当于<div>
21.让弹出窗口总是在最上面:
<body onblur=”this.focus();”>
22.不要滚动条?
 

 程序代码
让竖条没有:
<body style=”overflow:scroll;overflow-y:hidden”>
</body>
让横条没有:
<body style=”overflow:scroll;overflow-x:hidden”>
</body>
两个都去掉?更简单了
<body scroll=”no”>
</body>

 

23.怎样去掉图片链接点击后,图片周围的虚线?
<a href=”#” onFocus=”this.blur()”><img src=”/logo.jpg” border=0></a>
24.电子邮件处理提交表单
 

 程序代码
<form name=”form1″ method=”post” action=mailto:****@***.com
enctype=”text/plain”>
<input type=submit>
</form>
25.在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()
26.如何设定打开页面的大小
<body onload=”top.resizeTo(300,200);”>
打开页面的位置<body onload=”top.moveBy(300,200);”>
27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
 

 程序代码
<STYLE>
body
{background-image:url(/logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</STYLE>
28. 检查一段字符串是否全由数字组成
 

 程序代码
<script language=”Javascript”><!–
function checkNum(str){return str.match(//D/)==null}
alert(checkNum(“1232142141”))
alert(checkNum(“123214214a1”))
// –></script>
29. 获得一个窗口的大小
document.body.clientWidth; document.body.clientHeight
30. 怎么判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert(“含有汉字”);
else alert(“全是字符”);

仿淘宝运费-无错JS修改版

 

good.php页面

 

/*—————————————————— */
//取得全国一级城市信息  for nopost QQ:859898918
/*—————————————————— */
function get_region_name(){
$sql=”SELECT * FROM ecs_region WHERE parent_id =’1′;”;
return $GLOBALS[‘db’]->getAll($sql);
}
/*—————————————————— */
//:取得商品的重量  for nopost QQ:859898918
/*—————————————————— */
function get_goods_weight($goods_id){
$sql=”select goods_weight from ecs_goods where goods_id = ‘$goods_id’;”;
$rs = $GLOBALS[‘db’]->getAll($sql);
return $rs[0][‘goods_weight’];
}
//传给smarty模板
$smarty->assign(‘tc_goods_weight’,get_goods_weight($goods_id));//商品重量
$smarty->assign(‘regionname’,get_region_name()); //全国一级省市

 

 good.dwt页面

 

< script>
/*  运费JS */
function createCityList(elem){
 var e=event || window.event;
 var xx = e.clientX;
 var yy = e.clientY;
 $$(“showList”).style.display=’block’;
 $$(“showList”).style.left=xx+’px’;
 $$(“showList”).style.top=yy+’px’; 
}
function changeCity(cityname,regid){
 var tc_goodsweight = Math.ceil($$(“hiddenprice”).innerText); //取得商品重量
 $$(“flowcity”).innerText=cityname;
 if(tc_goodsweight== 0)
  tc_goodsweight=1;
 else
  tc_goodsweight=tc_goodsweight;
 //北京
 if(regid==2){
  initprice();
 }
 //河北 天津
 else if(regid==27 || regid==10){  
  if(tc_goodsweight==1){
   $$(“tc_flowprice”).innerText= “8”; //首重
  }else{
   $$(“tc_flowprice”).innerText= ((tc_goodsweight – 1)*3 + 8 ); //续3
  } 
 }
 //新疆 西藏
 else if(regid==28 || regid==29){
  if(tc_goodsweight==1){
   $$(“tc_flowprice”).innerText= “20”; //首重
  }else{
   $$(“tc_flowprice”).innerText= ((tc_goodsweight – 1)*10 + 20 );//续10
  }
 }
 //香港
 else if(regid==33){
  if(tc_goodsweight==1){
   $$(“tc_flowprice”).innerText= “25”; //首重
  }else{
   $$(“tc_flowprice”).innerText= ((tc_goodsweight – 1)*10 + 25 );//续10
  }
 }
 //澳门
 else if(regid==34){
  if(tc_goodsweight==1){
   $$(“tc_flowprice”).innerText= “35”; //首重
  }else{
   $$(“tc_flowprice”).innerText= ((tc_goodsweight – 1)*20 + 35 );//续20
  }
 }
 //台湾
 else if(regid==35){
  if(tc_goodsweight==1){
   $$(“tc_flowprice”).innerText= “30”; //首重
  }else{
   $$(“tc_flowprice”).innerText= ((tc_goodsweight – 1)*28 + 30 );//续28
  }
 }
 //其他
 else{
  if(tc_goodsweight==1){
   $$(“tc_flowprice”).innerText= “10”; //首重
  }else{
   $$(“tc_flowprice”).innerText= ((tc_goodsweight – 1)*5 + 10 );//续5
  }
 }
 
 $$(“showList”).style.display=’none’;
}
function hideCityList(){
 $$(“showList”).style.display=’none’;
}
</script>

 

……

 

 

 

 

 
      <li>
       <dd>
       <!– {if $goods.goods_brand neq “” and $cfg.show_brand} 显示商品品牌–>
       <strong>{$lang.goods_brand}</strong><a href=”{$goods.goods_brand_url}” >{$goods.goods_brand}</a>
       <!–{/if}–>
       </dd>
       <dd>     
                     至 <label onmouseover=”createCityList(this);” onmouseout=”hideCityList();”  id=”flowcity”>{$mycity}</label><img src=”images/selectcity.jpg” /> <label id=”tc_flowprice”>平邮:{$p_fee}元  快递:{$s_fee}元  EMS{$e_fee} 元</label> <br />
     
        <div id=”showList” style=”position:absolute;border:2px solid #ccc; display:none;font-size:12px; padding:5px; background:#fff; width:260px; z-index:99999″ onmousemove=”this.style.display=’block'”; onmouseout=”this.style.display=’none'”> 
    <div id=”hiddenprice” style=”display:none;”>{$tc_goods_weight.goods_weight}</div>
    <!–{foreach from=$regionname item=region_names}–>
     <a href=”javascript:” onclick=”changeCity(this.innerText,{$region_names.region_id})”>{$region_names.region_name}</a>
    <!–{/foreach}–>
        </dd>
      </li>
      <li>
       <dd>
       <!– {if $cfg.show_addtime} 上架时间–>
      <strong>{$lang.add_time}</strong>{$goods.add_time}
      <!– {/if} –>
       </dd>
       <dd>
       <!–点击数–>
       <strong>{$lang.goods_click_count}:</strong>{$goods.click_count}
       </dd>
      </li>

 

……

 

<!– {literal} –>
onload = function(){
  changePrice();
  fixpng();
  //initprice(); //tc:初始化运费信息
  try { onload_leftTime(); }
  catch (e) {}
}

 

/**
 * 运费相关
 */
function initprice(){
var tc_goodsweight = Math.ceil($$(“hiddenprice”).innerText);
tc_goodsweight == 0 ? 1 : tc_goodsweight;
if(tc_goodsweight <=5)
  $$(“tc_flowprice”).innerText = ‘5’;
if(tc_goodsweight >=5 && tc_goodsweight<=10)
  $$(“tc_flowprice”).innerText = ’10’;
if(tc_goodsweight >=10 && tc_goodsweight<=15)
  $$(“tc_flowprice”).innerText = ’15’;
if(tc_goodsweight >=15 && tc_goodsweight<=20)
  $$(“tc_flowprice”).innerText = ’20’;
}

 

/**
 * 点选可选属性或改变数量时修改商品价格的函数
 */
function changePrice()
{
  var attr = getSelectedAttributes(document.forms[‘ECS_FORMBUY’]);
  var qty = document.forms[‘ECS_FORMBUY’].elements[‘number’].value;

 

  Ajax.call(‘goods.php’, ‘act=price&id=’ + goodsId + ‘&attr=’ + attr + ‘&number=’ + qty, changePriceResponse, ‘GET’, ‘JSON’);
}

 

/**
 * 接收返回的信息
 */
function changePriceResponse(res)
{
  if (res.err_msg.length > 0)
  {
    alert(res.err_msg);
  }
  else
  {
    document.forms[‘ECS_FORMBUY’].elements[‘number’].value = res.qty;

 

    if (document.getElementById(‘ECS_GOODS_AMOUNT’))
      document.getElementById(‘ECS_GOODS_AMOUNT’).innerHTML = res.result;
  }
}
<!– {/literal} –>
</script>
</html>