JS Q&A

URL背面#号是代表什么?

  • # 代表页面中的某个位置,也称为地点hash值
  • #XX 作用当前可视地区移动到页面xx位置
  • # 仅对浏览器起作用,对服务器无用,所以HTTP要求不包括#(#以后的字符都不会被发送到服务器端。)
  • 转变#不触发网页重载
  • 转变#会转变浏览器的接见汗青

怎样猎取URL中#号的值?

  • 运用window.location.hash这个属性可读可写

怎样监听URL中#号值的变化

  • onhashchange事宜(IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支撑该事宜。)
window.addEventListener("hashchange", function(){
   var hash = window.location.hash.slice(1);
});

浏览器中的localStorage怎样存取?

  • localStorage存值
 localStorage.setItem(key,val);
  • localStorage取值
var data = localStorage.getItem(key);

传统表单提交前的数据校验怎样完成?

  • 运用表单提交事宜onSubmit,返回ture,表单继承提交,返回false,表单停止提交
       <form name="formLogin" action="user.php" method="post" onSubmit="userLogin()">
            <table width="100%" border="0" align="left" cellpadding="3" cellspacing="5">
                <tr>
                    <td width="15%" align="right">{$lang.label_username}</td>
                    <td width="85%"><input name="username" type="text" size="25" class="inputBg"
                                           placeholder="请输入用户名/手机号"/></td>
                </tr>
                <tr>
                    <td align="right">{$lang.label_password}</td>
                    <td>
                        <input name="password" type="password" size="15" class="inputBg"/>
                    </td>
                </tr>
                <!-- 推断是不是启用考证码{if $enabled_captcha} -->
                <tr>
                    <td align="right">{$lang.comment_captcha}</td>
                    <td><input type="text" size="8" name="captcha" class="inputBg"/>
                        <img src="captcha.php?is_login=1&{$rand}" alt="captcha"
                             style="vertical-align: middle;cursor: pointer;"
                             onClick="this.src='captcha.php?is_login=1&'+Math.random()"/></td>
                </tr>
                <!--{/if}-->
                <tr>
                    <td colspan="2"><input type="checkbox" value="1" name="remember" id="remember"/><label
                            for="remember">{$lang.remember}</label></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td align="left">
                        <input type="hidden" name="act" value="act_login"/>
                        <input type="hidden" name="back_act" value="{$back_act}"/>
                        <input type="submit" name="submit" value="" class="us_Submit"/>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td class="f3">找回暗码:(<a href="user.php?act=qpassword_name" class="f3">暗码题目</a>&nbsp;<a
                            href="user.php?act=get_password" class="f3">邮件</a>&nbsp;<a
                            href="user.php?act=sms_get_password" class="f3">短信考证</a>)
                    </td>
                </tr>
            </table>
        </form>
function userEdit()
{
  var frm = document.forms['formEdit'];
  var email = frm.elements['email'].value;
  var msg = '';
  var reg = null;
  var passwd_answer = frm.elements['passwd_answer'] ? Utils.trim(frm.elements['passwd_answer'].value) : '';
  var sel_question =  frm.elements['sel_question'] ? Utils.trim(frm.elements['sel_question'].value) : '';

  if (email.length == 0)
  {
    msg += email_empty + '\n';
  }
  else
  {
    if ( ! (Utils.isEmail(email)))
    {
      msg += email_error + '\n';
    }
  }

  if (passwd_answer.length > 0 && sel_question == 0 || document.getElementById('passwd_quesetion') && passwd_answer.length == 0)
  {
    msg += no_select_question + '\n';
  }

  for (i = 7; i < frm.elements.length - 2; i++)    // 从第七项最先轮回搜检是不是为必填项
  {
    needinput = document.getElementById(frm.elements[i].name + 'i') ? document.getElementById(frm.elements[i].name + 'i') : '';

    if (needinput != '' && frm.elements[i].value.length == 0)
    {
      msg += '- ' + needinput.innerHTML + msg_blank + '\n';
    }
  }

  if (msg.length > 0)
  {
    alert(msg);
    return false;
  }
  else
  {
    return true;
  }
}

数据范例转换规则

  • 自动转换为布尔值

JavaScript 碰到预期为布尔值的处所(比方if语句的前提部份),就会将非布尔值的参数自动转换为布尔值。体系内部会自动挪用Boolean函数。

因而除了以下五个值,其他都是自动转为true。

undefined
null
0
NaN
''(空字符串)
  • 自动转换为字符串

JavaScript 碰到预期为字符串的处所,就会将非字符串的值自动转为字符串。详细规则是,先将复合范例的值转为原始范例的值,再将原始范例的值转为字符串。

字符串的自动转换,重要发生在字符串的加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串。

'5' + 1 // '51'
'5' + true // "5true"
'5' + false // "5false"
'5' + {} // "5[object Object]"
'5' + {a:12} // "5[object Object]"
'5' + [] // "5"
'5' + [1,2] // "51,2"
'5' + function (){} // "5function (){}"
'5' + undefined // "5undefined"
'5' + null // "5null"
  • 自动转换为数值

JavaScript 碰到预期为数值的处所,就会将参数值自动转换为数值。体系内部会自动挪用Number函数。

除了加法运算符(+)有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。

'5' - '2' // 3
'5' * '2' // 10
true + 3  // 4
true - 1  // 0
false - 1 // -1
'1' - 1   // 0
'5' * []    // 0
false / '5' // 0
'abc' - 1   // NaN
null + 1 // 1
undefined + 1 // NaN

// 对象 -> NaN

// 数组 
1、空数组 -> 0
2、只要一个元素数组(数值) ->  数值
3、只要一个元素数组(数值字符串)  ->  数值
4、多个元素数组 -> NaN

// 函数 -> NaN

注重:null 转为数值时为 0,而 undefined 转为数值时为 NaN

比较运算(==) – 数据范例转换

记着惯例:

null == underfined (true)

null == null (true)

underfined == underfined (true)

NaN == NaN (false)

除了上面这2种要记着,只要存在
null、underfined、NaN个中一个,比较都是返回
fasle

==双方值范例相同时,无需转换,不同时,自动转换(全转成数值范例)

// 当比较的数据范例相同时
Number / String / Boolean ---> true
对象 / 数组 / 函数 ---> false
null / underfined ---> true

// 当比较的数据范例不相同时(转成数值范例Number)
一边是Number / String / Boolean,另一边是null / underfined  都为false

JS数组也能够存非数值Key

  • 最最先熟悉的JS数组
var arr = ['234',123,{'name':'xiaoming'},ture];

// 修正
arr[0]="Opel";
  • 末了发明JS数组也能够像PHP数组一样,能够存key
var array = new Array();
    array["first"] = "my";
    array["second"] = "name";
    array["third"] = "is";
    
var arr = [];
    arr["first"] = "my";
    arr["second"] = "name";
    arr["third"] = "is";
// 打印出数组:["first":"my","second":"name","third":"is"]
// 运用以下:
array['first']
    原文作者:104828720
    原文地址: https://segmentfault.com/a/1190000010325672
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞