美文网首页
第一章 未入江湖,先定三分

第一章 未入江湖,先定三分

作者: 不系流年系乾坤 | 来源:发表于2016-10-31 18:59 被阅读16次

    1. JavaScript是基于对象的、事件驱动的脚本程序设计语言。所谓对象是指任何事物都可以封装成类,而一个类中具体的某个事物就是这个类的对象;所谓事件是指为这些事件定义一些动作,当处理这些事件后就执行相关代码,进行一些操作。

    2. 截取字符串www.qdjhu.com中的qdjhu

    var siteurl = 'www.qdjhu.com';
    var result = siteurl.substr(4,5);
    
    stringObject.substr(start,length);
    
    sub 英[sʌb]美[sʌb]
    n.  潜水艇; 代用品,代替者,替补队员; 地铁; 审校员;
    vi. 做替身,做替补队员; 做替身,审校(文稿);
    

    3. 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线、总长度为5~20;

    [a-z]是匹配小写的26个字母,[A-Z]是匹配大写的26个字母,{n}表示匹配几位,\w表示任意的字母、数字、下划线

    var c = /^[a-zA-Z]{1}\w{4,19}/
    

    4. indexOf(string)返回字符串中string在父串首次出现的位置,从0开始!没有返回-1。

    var stringValue = "hello world";
    console.log(stringValue.slice(3,7));    //"lo w"
    console.log(stringValue.substring(3,7));    //"lo w"
    console.log(stringValue.substr(3,7));   //  "lo worl"
    console.log(stringValue.indexOf("o"));  // 4
    console.log(stringValue.lastIndexOf("o"));  // 7
    

    5. 如何获取浏览器URL中查询字符串的参数?

    Location对象包含了当前页面与位置(url)相关的信息
    
    URL示例:http://www.baidu.com:80/news/index.aspx?id=1&name=location#top
    
    Location对象共定义了8个属性:
    
    href:声明了当前显示文档的完整的URL
    
    protocol:声明URL的协议部分,包括后缀的冒号,例如http:
    
    host:声明当前URL的主机名和端口号(是hostname和port的合集),例如www.baidu.com:80
    
    hostname:声明当前URL的主机名,例如www.baidu.com
    
    port:声明当前URL的端口部分,例如80
    
    pathname:声明当前URL的路径部分,例如news/index.aspx
    
    search:声明当前URL的查询部分,例如?id=1&name=localhost
    
    hash:声明当前URL的锚的部分,例如#top,指定在文档中的锚记的名称
    
    Location对象的这些属性都是可读可写的,如果改变了文档的location.href,则浏览器会载入新的页面。同样如果改变了location.hash,则页面会跳转到新的锚点,但此时页面不会重载。
    
    想必大家会想,这个与link对象的url属性类似啊,不过link对象表示的是文档中的超链接,而Location对象表示的是浏览器当前显示文档的url。
    
    
    
    当然,Location对象还有两个方法:reload()和replace()
    
    reload():可以重新装载当前文档
    
    replace():可以装载一个新文档而无须为它创建一个新的历史记录。也就是说,在浏览器的历史列表中,新文档将替换当前文档。这样就不能通过【返回】按钮返回当前文档了。
    
    通过将url字符串信息赋值给窗口的location属性来装载新文档,可以实现返回浏览。
    
    对那些使用了框架而且显示多个临时也的网站来说,replace()方法比较有用,这样临时页面都不被存储在历史列表中。
    
    注意:
    
    不要混淆Window对象的location属性和Document对象的location对象。前者引用一个Location对象,后者只是一个只读字符串,并不具有Location对象的任何特性。Document.location与document.URL是同义的。但是,当存在服务器重定向时,document.location包含的是已经装载的URL,而location.href包含的则是原始请求的文档的URL。
    
    
    
    什么是查询字符串?就是Location对象的search属性的值,在这里指?id=1&name=location
    
    那么用Locaton对象结合String对象的方法怎么获取呢?可以用下面这个函数获取:
    
    function getQuery(name)
    {
      var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
      var r = window.location.search.substr(1).match(reg);
      if (r!=null) 
        return unescape(r[2]); 
      return null;
    }
    

    6. 实现一个删除字符串左边空白字符串的方法

    function leftTrim(str){
      return str.replace(/^\s*/g,"");  //^符号表示从开头进行匹配 g表示全局模式,即模式将被应用于所有字符串,而并非发现第一个匹配项时立即停止
    }
    

    7.

    typeof(null); //object
    typeof(NaN);//number
    

    8. js实现反转字符串

    function revStr(str){
      var tmpStr = "";
      for(var l = str.length-1;l>=0;l--){
        tmpStr+=str.charAt(l);
      }
      return tmpStr;
    }
    

    9.

    var a = (Math.PI++);
    console.log(a);  //3.141592653589793
    

    10.

    var str = 'abcd-ef-ghi';
    var arr1 = str.split('-');
    var result = arr1.reverse().join('&');
    console.log(result);  //ghi&ef&abcd
    

    11. undeclared是一种语法错误,访问undeclared的变量并非会中断浏览器执行。在浏览器运行上下文中,undeclared出来的变量简单可以认为没有var a这样定义变量。JS引擎执行的时候,由于无法找到其对应的上下文(scope),所有会简单地认为该变量是全局变量,就会把该变量定义到window中去。

    12. 5种基本数据类型:Undefined Null Boolean Number String。复合数据类型:function函数类型[*]object对象类型,object本质是由一组无序的名值对组成的。array数组类型(它是一种特殊的object对象类型)检查一个变量的数据类型。

    13. 实现alert中的换行

    alert("hello\nworld");
    

    14. alert()、confirm()和prompt()的区别与用法

    1.警告消息框alert
    alert 方法有一个参数,即希望对用户显示的文本字符串。该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作。 
    window.alert("欢迎!请按“确定”继续。"); 
    2.确认消息框confirm 
    使用确认消息框可向用户问一个“是-或-否”问题,并且用户可以选择单击“确定”按钮或者单击“取消”按钮。confirm 方法的返回值为 true 或 false。该消息框也是模式对话框:用户必须在响应该对话框(单击一个按钮)将其关闭后,才能进行下一步操作。 
    var truthBeTold = window.confirm("单击“确定”继续。单击“取消”停止。"); 
    if (truthBeTold) { 
    window.alert("欢迎访问我们的 Web 页!"); 
    } else window.alert("再见啦!"); 
    3.提示消息框prompt
    提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个“确定”按钮和一个“取消”按钮。如果您提供了一个辅助字符串参数,则提示消息框将在文本字段显示该辅助字符串作为默认响应。否则,默认文本为 "<undefined>"。 
    与alert( ) 和 confirm( ) 方法类似,prompt 方法也将显示一个模式消息框。用户在继续操作之前必须先关闭该消息框 
    var theResponse = window.prompt("欢迎?","请在此输入您的姓名。");
    

    15. 鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)

    <script type="text/javascript">
     function elementName(evt){
      evt = evt|| window.event;
      var selected = evt.target || evt.srcElement;
      alert(selected.tagName);
     }
    
     window.onload = function(){
      var el = document.getElementsByTagName('body');
      el[0].onclick = elementName;
     }
    </script>
     gg IE:有window.event对象 
     FF:没有window.event对象,可以通过给函数的参数传递event对象。如onmousemove=doMouseMove(event)
     ie用e.srcElement,ff用e.target   chrome浏览器同时具有这两个属性
    

    16.

    var a = 1;
    function f(){
      alert(a);
      var a = 2;
    }
    f();  //undefined
    

    17. js中outerHTML与innerHTML的区别

    使用innerHTML的时候将找着元素的内容(不包含元素本身)
    使用outerHTML的时候将找着元素的内容(包含元素本身)
    

    18. window.opener是Javascript中window的一个属性,它返回的是打开当前窗口的窗口对象。如果窗口A弹出一个窗口B,那么在B中window.opener就是窗口对象A;window.location.reload()方法是用来刷新当前整个页面的。

    19. js 页面刷新location.reload和location.replace的区别小结

    reload 方法,该方法强迫浏览器刷新当前页面。 
    语法: location.reload([bForceGet]) 
    参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新") 
    
    replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。 
    语法: location.replace(URL) 
    在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method="post"的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到: 当调用 location.reload() 方法的时候, aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, 我们期望是 Not IsPostback 的。这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写: location.replace(location.href) 
    
    replace函数在设置URL方面与location的href属性或assign函数完全一样,但是它会删除history对象的地址列表中的URL,从而使go或back等函数无法导航。 
    
    
    1, window.location.href 
    整个URl字符串(在浏览器中就是完整的地址栏) 
    本例返回值: http://www.jb51.net:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere 
    2,window.location.protocol 
    URL 的协议部分 
    本例返回值:http: 
    3,window.location.host 
    URL 的主机部分 
    本例返回值:www.jb51.net 
    4,window.location.port 
    URL 的端口部分 
    如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符 
    本例返回值:"" 
    5,window.location.pathname 
    URL 的路径部分(就是文件地址) 
    本例返回值:/fisker/post/0703/window.location.html 
    6,window.location.search 
    查询(参数)部分 
    除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值 
    本例返回值:?ver=1.0&id=6 
    7,window.location.hash 
    锚点 
    本例返回值:#imhere 
    

    20.

    document.myForm.xxx按照层级结构来获取
    创建var odiv = document.createElement('div');
    删除document.body.remove(oP)
    添加节点appendChild
    复制节点cloneNode
    appendTo用来追加到指定元素的末尾
    createTextNode()用指定的文本创建新的文本节点对象
    createAttibute()用指定名字创建新的Attr节点对象
    nodeType用来判断节点类型
    
    cloneNode
    
    var node=document.getElementById("myList2").lastChild.cloneNode(true);
    document.getElementById("myList1").appendChild(node);
    
    克隆之前:
    Coffee
    Tea
    Water
    Milk
    
    克隆之后:
    Coffee
    Tea
    Milk
    Water
    Milk
    
    可选。默认是 false。
    设置为 true,如果您需要克隆节点及其属性,以及后代
    设置为 false,如果您只需要克隆节点及其后代
    

    21. JS nodeName、nodeValue、nodeType返回类型

    nodeName 属性含有某个节点的名称。
    元素节点的 nodeName 是标签名称
    属性节点的 nodeName 是属性名称
    文本节点的 nodeName 永远是 #text
    文档节点的 nodeName 永远是 #document
    注释:nodeName 所包含的 XML 元素的标签名称永远是大写的
    
    nodeValue
    对于文本节点,nodeValue 属性包含文本。
    对于属性节点,nodeValue 属性包含属性值。
    nodeValue 属性对于文档节点和元素节点是不可用的。
    
    nodeType
    nodeType 属性可返回节点的类型。
    最重要的节点类型是:
    元素类型 --> 节点类型
    元素element --> 1
    属性attr --> 2
    文本text -->  3
    注释comments --> 8
    文档document --> 9
    
    
    nodeValue就是用来得到“文本元素的值”的,即只适用于“文本节点”;
    例子:
    <html>
    <head>
    <script type="text/javascript">
    function getNodeValue()
    {
    var nv=document.getElementByIdx_x("td1").firstChild.nodeValue;
    var nn=document.getElementByIdx_x("tr1").firstChild.nodeName;
    var nv1=document.getElementByIdx_x("tr1").firstChild.nodeValue;
    alert("nv="+nv);
    alert("nn="+nn);
    alert("nv1="+nv1);
    }
    </script>
    </head>
    <body>
    <table>
      <tr id="tr1">
        <td id="td1" >John</td>
        <td>Doe</td>
        <td>Alaska</td>
      </tr>
    </table>
    <input type="button" value="button1"  onclick="getNodeValue()"/>
    </body>
    </html>
    
    以上得到的结果:
    nv=John;
    nn=td;
    nv1=null;
    要分清元素的value属性和nodeValue 不一样,nodeValue适用于“文本节点”和“属性节点”;对应“文档节点”和“标签节点”不起作用
    
    接口            nodeType常量             nodeType值              备注
    Element       Node.ELEMENT_NODE              1                   元素节点
    Text               Node.TEXT_NODE            3                   文本节点
    Document       Node.DOCUMENT_NODE            9                    document
    Comment           Node.COMMENT_NODE          8                   注释的文本
    DocumentFragment    Node.DOCUMENT_FRAGMENT_NODE     11          document片断
    Attr         Node.ATTRIBUTE_NODE              2                节点属性  
    

    22. 实现输出document对象中的所有成员的名称和类型

    <script language="javascript">
    for(key in document){
        document.write(key +'==='+ document[key]+'<br />');
    }
    </script>
    
    找到所有className包含text的标签<li>,并将它们的背景颜色设置为黄色
    
    var list = document.getElementByTagname('li');
    for(i=0;i<list.length;i++){
      if(list[i].getAttribute('class')=='test'){
        //把背景设置成黄色
      }
    }
    
    保留字在某种意义上是将来的关键词而保留的单词,不能被用再来作为变量名和函数名,不属于js的保留字with parent void arguments 属于的class
    
        ECMA-262 描述了一组具有特定用途的关键字。这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。以下就是ECMAScript的全部关键字(带*号上标的是第5 版新增的关键字):
    break   do  instanceof  typeof
    case    else    new var
    catch   finally return  void
    continue    for switch  while
    debugger*   function    this    with
    default if  throw   delete
    in  try      
    ECMA-262 还描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途。但它们有可能在将来被用作关键字。以下是ECMA-262 第3 版定义的全部保留字:
    abstract    enum    int short
    boolean export  interface   static
    byte    extends long    super
    char    final   native  synchronized
    class   float   package throws
    const   goto    private transient
    debugger    implements  protected   volatile
    double  import  public   
    第5 版把在非严格模式下运行时的保留字缩减为下列这些:
    class   enum    extends super
    const   export  import   
    在严格模式下,第5 版还对以下保留字施加了限制:
    implements  package public  interface
    private static  let protected
    yield            
    注意, let 和yield 是第5 版新增的保留字;其他保留字都是第3 版定义的。为了最大程度地保证兼容性,建议大家将第3 版定义的保留字外加let 和yield 作为编程时的参考。
    
    在实现ECMAScript 3 的JavaScript 引擎中使用关键字作标识符,会导致"Identifier Expected" 错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。
    
    第5 版对使用关键字和保留字的规则进行了少许修改。关键字和保留字虽然仍然不能作为标识符使用,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的ECMAScript 版本兼容。
    
    除了上面列出的保留字和关键字,ECMA-262 第5 版对eval 和arguments 还施加了限制。在严格模式下,这两个名字也不能作为标识符或属性名,否则会抛出错误。
    

    23.

    js的几种循环语句
    for
    for-in
    while
    do-while

    相关文章

      网友评论

          本文标题:第一章 未入江湖,先定三分

          本文链接:https://www.haomeiwen.com/subject/owpputtx.html