在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ HTML問(wèn)答
若相惜 回答

如果你用了<input defaultValue={Value}/>, react是不會(huì)管理input的值,修改可以通過(guò)找到input,通過(guò)input.value = newValue去修改
如果你用了<input value={this.state.value} onChange={this.handleChange}/>,這時(shí)候是react來(lái)管理input的value,需要通過(guò)handleChange方法去this.setState({value: e.target.value})

尋仙 回答

學(xué)防抖

//  如何判斷元素是否在可視區(qū)域
  // 方法一 
  function isInSight2(ele) {
      var visibleArea = document.documentElement.clientHeight;//屏幕可視區(qū)域的高度
      var eleTop = ele.offsetTop;//元素相對(duì)于文檔頂部的距離
      var scrollTop = document.documentElement.scrollTop;// 獲取瀏覽器窗口頂部距離文檔頂部的距離(滾動(dòng)條滾動(dòng)的距離)
      return eleTop - scrollTop < visibleArea ? true : false
  }
  // 方法二 https://segmentfault.com/a/1190000010744417
  function isInSight(el) {
      const bound = el.getBoundingClientRect(); // 圖片到頂部可視區(qū)域的高度
      const clientHeight = window.innerHeight;// 可視區(qū)域的高度
      //如果只考慮向下滾動(dòng)加載
      //const clientWidth=window.innerWeight;
      return bound.top <= clientHeight + 100;
  }

其實(shí)這個(gè)圖叫做骨架屏,由于vue在數(shù)據(jù)渲染出來(lái)之前會(huì)出現(xiàn)NAN或者undefined,用戶體驗(yàn)感非常不好,我們可以巧妙的避免這個(gè)問(wèn)題,在請(qǐng)求接口返回?cái)?shù)據(jù)之前顯示骨架屏,待數(shù)據(jù)請(qǐng)求成功返回,隱藏骨架屏,顯示數(shù)據(jù)。

/*設(shè)置全屏的骨架屏背景圖*/
<div class="skeleton" v-if="skeleton"></div>
    
created() {
    /*是否顯示骨架屏*/
    skeleton: true
}
methods() {
   fetchData().then(res => {
       console.log('數(shù)據(jù)請(qǐng)求成功')
        /*隱藏骨架屏*/
        this.skeleton = false
    }).catch(err => {
        this.skeleton = false
    }) 
}
玩控 回答

v-html是不會(huì)編譯的
官網(wǎng)上寫著:
‘注意:內(nèi)容按普通 HTML 插入 - 不會(huì)作為 Vue 模板進(jìn)行編譯 。如果試圖使用 v-html 組合模板,可以重新考慮是否通過(guò)使用組件來(lái)替代?!?/p>

尛憇藌 回答

你這個(gè)打印怎么出來(lái)的?return并不會(huì)打印啊老鐵.
所以你看到的欺騙你了.

for(var i=0;i<10;i++){
    console.log((function(){
        console.log(i);
        return "abvdef";
       })());
}
爆扎 回答

估計(jì)刪不了,只要有 iframe,瀏覽器就會(huì)在里面創(chuàng)建基本的 html 文檔,即使里面什么都沒(méi)有,你可以直接把 iframe 給刪了,然后數(shù)據(jù)單獨(dú)保存下:

let iframes=document.getElementsByTagName('iframe')[0].parentNode.removeChild(document.getElementsByTagName('iframe')[0]);

如圖,這是當(dāng)前頁(yè)面的 iframe:

clipboard.png

話寡 回答
表示 address= 加上除了分好外的東西??

嗯嗯,[^;] 表示匹配一個(gè)不為 ; 的字符,僅僅匹配一次

那個(gè)星號(hào)是啥,加了星號(hào)能去除shanghai,不加的話就取了一個(gè)s

*表示匹配任意次,默認(rèn)是符合匹配規(guī)則的情況下,越多越好,所以匹配到了后面全部的,直到;
不加 * 就是上面的,默認(rèn)僅僅匹配一次,所以只能匹配到一個(gè) s

陪她鬧 回答

for (let x of collection) {}
等價(jià)于
for (let x of collection[Symbol.iterator]()) {}
效果:遍歷迭代器。

Collection類中

// 這是個(gè)生成器函數(shù)
*[Symbol.iterator]() {
    yield *this.items.values();
}

而執(zhí)行生成器函數(shù)會(huì)返回一個(gè)迭代器。
iter = collection[Symbol.iterator]();

for (let x of collection[Symbol.iterator]()) {}
等價(jià)于
for (let x of iter) {}

來(lái)看iter這個(gè)迭代器
*[Symbol.iterator]() {}生成器函數(shù)內(nèi)yield *表達(dá)式執(zhí)行了this.items.values方法,返回1個(gè)迭代器,每次遍歷該迭代器返回?cái)?shù)組每一項(xiàng)的值。(Array.prototype.values() 方法 chrome未實(shí)現(xiàn)所以報(bào)錯(cuò))

那么:
for (let x of iter) {}
等價(jià)于
for (let x of collection.items) {}


不大好講。。感覺(jué)至少得先了解迭代器和生成器的概念。。。
貼個(gè)參考鏈接吧

尤禮 回答

至少在我用的時(shí)候(17年10月份)還未提供該功能……插件也許會(huì)有……請(qǐng)使用Git自帶的diff或者ToitorseGit里面的類似工具……
找到了一個(gè)插件~
https://marketplace.visualstu...

念初 回答

好吧,好像確實(shí)有問(wèn)題

clipboard.png

后來(lái)又嘗試寫了一下

  • 先把數(shù)組每個(gè)元素當(dāng)成一個(gè)樹,之后合并到一個(gè)樹中
  • 前序遍歷求出每個(gè)節(jié)點(diǎn)下所有葉子節(jié)點(diǎn)的個(gè)數(shù),比如 type2 這個(gè)節(jié)點(diǎn)就有5個(gè)所有葉子節(jié)點(diǎn)
  • 層序遍歷這個(gè)樹的每個(gè)節(jié)點(diǎn),每層開始在表頭添加一個(gè) tr 元素 ,并記錄下這個(gè)元素。然后遍歷這一層的節(jié)點(diǎn),如果有子節(jié)點(diǎn)則添加 <td colspan="x">x 為上面所有葉子節(jié)點(diǎn)數(shù)量;如果沒(méi)有子節(jié)點(diǎn)則添加 <td rowspan="y"> y 為 “合并樹的最大深度 - 當(dāng)前深度” (表頭畫完)
  • 遍歷數(shù)組中每一個(gè)樹,完善數(shù)據(jù)
const appendTd = (tr, hasChild, size, name) => {
  const td = document.createElement('td')
  if (hasChild) {
    td.setAttribute('colspan', size)
  } else {
    td.setAttribute('rowspan', size)
  }
  td.innerText = name
  tr.appendChild(td)
}

//------------ 原答案 ----------------

這里只提供一種思路,詳細(xì)代碼就不寫了

// const data = ...原始數(shù)據(jù)
let table = {}
data.map((item) => {
  table = {...table, ...item}
})
console.log(table)

首先利用 es6 解構(gòu),將所有對(duì)象具有的屬性合并起來(lái),你就可以得到一個(gè)完整的表頭的結(jié)構(gòu),這里數(shù)據(jù)不重要。

{ name: 'BBB',
  age: 12,
  score:
   { type1: { item1: 12, item2: 23, item3: 23 },
     type2: { item4: 12, item5: 23, item6: 23 } } }

之后一層一層遍歷這個(gè)對(duì)象樹,就能得到整個(gè)表頭了

表頭畫好后,用剛剛得到的表頭去挨個(gè)遍歷每個(gè)數(shù)據(jù)項(xiàng),并且畫單元格,沒(méi)有數(shù)據(jù)不填。

葬憶 回答

你已經(jīng)在 app.js 里示例化過(guò) Vue 了,為什么還要在 balde 模板里再次進(jìn)行示例化呢?

直接在 blade 模板中引入編譯后的 app.js,就可以使用 Vux 提供的組件了

PS: Vue 是個(gè)好框架 :)

伐木累 回答
  1. for (var i=1; i<=ss.length; i++)循環(huán)條件不對(duì),i的變化范圍應(yīng)該是從0ss.length - 1,不過(guò)這個(gè)不會(huì)導(dǎo)致報(bào)錯(cuò);

  2. arr[i]['id']=i;arr[i]['title']=a; arr是一個(gè)空數(shù)組,所以arr[i]undefinedundefined['id']undefined['title']當(dāng)然會(huì)報(bào)錯(cuò);

修改如下:

ss = s.split(",");
console.log(ss)
arr = [];
for (var i=0; i<ss.length; i++) {
    a=ss[i]
    arr[i] = {
        id: i,
        title: a
    }
}
console.log(arr)
遺莣 回答

1.this變量訪問(wèn)在運(yùn)行時(shí)候才會(huì)被綁定
2.其他變量訪問(wèn)在定義(位置)時(shí)候被綁定

看這段代碼應(yīng)該可以理解一部分

var name = "The Window";
var object = {
  name : "My Object",
  getNameFunc : function(){
      return this.name;
  }
};
var fun = object.getNameFunc;
console.log(object.getNameFunc())//My Object
console.log(fun())// The Window
局外人 回答

我記得weex debug是不支持windows的,不知道是不是記錯(cuò)了...

終相守 回答

一個(gè)JS庫(kù)的名字underscorejs,程序里用法就是_.map()。
http://underscorejs.org/

短嘆 回答

問(wèn)題解決了,workerman論壇上的一個(gè)哥們提醒了我是死循環(huán)導(dǎo)致進(jìn)程一直處于busy狀態(tài)。把php代碼中的死循環(huán)去掉:

// while (true) {
    $connection->send(根據(jù)接收到的客戶端的$data發(fā)送要發(fā)送的消息);
    // usleep(1000000); // 睡1秒  其實(shí)這個(gè)也可以去掉
// }

前端代碼中增加定時(shí)向后端發(fā)送消息的代碼,這樣后端就可以根據(jù)監(jiān)聽到的前端發(fā)送的消息往前端推送消息。worker進(jìn)程只有在發(fā)送消息時(shí)才會(huì)處于busy狀態(tài),否則就會(huì)idle。之前就是因?yàn)樗姥h(huán)一直發(fā)送消息(busy),這樣就導(dǎo)致前端頁(yè)面每次加載都會(huì)導(dǎo)致后端創(chuàng)建一個(gè)新的進(jìn)程(原來(lái)的worker進(jìn)程一直沒(méi)釋放)。我之前對(duì)后端往前端推送消息的業(yè)務(wù)邏輯和技術(shù)細(xì)節(jié)沒(méi)想清楚,哎,自己給自己挖了個(gè)坑。