Loại ghi nhật ký này thực sự chỉ dành cho phát triển, không phải sản xuất. Vì vậy, nó không thực sự quan trọng ảnh hưởng của nó đối với hiệu suất. Mặc dù bạn sẽ phải ghi nhật ký với số lượng đáng kinh ngạc để ảnh hưởng đến hiệu suất và mức sử dụng bộ nhớ
Tôi không hiểu ý của bạn là gì, tôi cũng không biết bạn đang nói về useEffect nào. Tôi không hiểu việc xóa nhật ký khỏi useEffect có thể gây ra lỗi như thế nào, mặc dù bạn chưa thực sự cho chúng tôi biết lỗi gì, "lỗi" không phải là thông tin hữu ích lắm
Chúng tôi không có quyền truy cập vào dữ liệu của bạn nên chúng tôi không thể biết điều gì sẽ xảy ra. Chúng tôi chỉ có thể giả định rằng shopItems.data là một mảng các đối tượng sẽ có sẵn ở trạng thái sau khi bạn đặt nó bên trong mã không đồng bộ
Giữ lại giá trị biến giữa các lần gọi hàm javascript [đã đóng]
// We're using a global variable to store the number of occurrences
var MyApp_SearchResultCount = 0;
var currSelected = 0;
var countStr = 0;
//var prevEl,el;
// helper function, recursively searches in elements and their child nodes
function MyApp_HighlightAllOccurencesOfStringForElement(element,keyword) {
if (element) {
if (element.nodeType == 3) { // Text node
while (true) {
var value = element.nodeValue; // Search for keyword in text node
var idx = value.toLowerCase().indexOf(keyword);
if (idx < 0) break; // not found, abort
var span = document.createElement("span");
var text = document.createTextNode(value.substr(idx,keyword.length));
span.appendChild(text);
span.setAttribute("class","MyAppHighlight");
span.style.backgroundColor="yellow";
span.style.color="black";
text = document.createTextNode(value.substr(idx+keyword.length));
element.deleteData(idx, value.length - idx);
var next = element.nextSibling;
element.parentNode.insertBefore(span, next);
element.parentNode.insertBefore(text, next);
element = text;
window.MyApp_SearchResultCount++; // update the counter
//countStr = MyApp_SearchResultCount;
}
} else if (element.nodeType == 1) { // Element node
if (element.style.display != "none" && element.nodeName.toLowerCase() != 'select') {
for (var i=element.childNodes.length-1; i>=0; i--) {
MyApp_HighlightAllOccurencesOfStringForElement(element.childNodes[i],keyword);
}
}
}
}
}
// the main entry point to start the search
function MyApp_HighlightAllOccurencesOfString(keyword) {
alert("test");
//MyApp_RemoveAllHighlights();
MyApp_HighlightAllOccurencesOfStringForElement(document.body, keyword.toLowerCase());
alert(window.MyApp_SearchResultCount);
}
// helper function, recursively removes the highlights in elements and their childs
function MyApp_RemoveAllHighlightsForElement(element) {
if (element) {
if (element.nodeType == 1) {
if (element.getAttribute("class") == "MyAppHighlight") {
var text = element.removeChild(element.firstChild);
element.parentNode.insertBefore(text,element);
element.parentNode.removeChild(element);
return true;
} else {
var normalize = false;
for (var i=element.childNodes.length-1; i>=0; i--) {
if (MyApp_RemoveAllHighlightsForElement(element.childNodes[i])) {
normalize = true;
}
}
if (normalize) {
element.normalize();
}
}
}
}
return false;
}
// the main entry point to remove the highlights
function MyApp_RemoveAllHighlights() {
window.MyApp_SearchResultCount = 0;
MyApp_RemoveAllHighlightsForElement(document.body);
}
function goNext(){
jump(1);
}
function goPrev(){
jump(-1);
}
var prevSelected = 0;
var currSelectedGlo = 0;
this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
alert(this.prevVal);
alert(this.currentVal);
prevSelected = currSelected;
currSelected = currSelected + howHigh;
//window.currSelectedGlo = currSelected + howHigh;
//currSelected = window.currSelectedGlo;
//alert("prevSelected" +prevSelected);
//alert("window.currSelected "+ currSelected);
//alert(window.MyApp_SearchResultCount);
//alert(currSelected);
if (currSelected < 0){
currSelected = window.MyApp_SearchResultCount + currSelected;
}
if (currSelected >= window.MyApp_SearchResultCount){
currSelected = currSelected - window.MyApp_SearchResultCount;
}
prevEl = document.getElementsByClassName("MyAppHighlight")[prevSelected];
//alert(window.prevEl);
if (prevEl){
prevEl.style.backgroundColor="yellow";
}
el = document.getElementsByClassName("MyAppHighlight")[currSelected];
el.style.backgroundColor="green";
el.scrollIntoView(true); //thanks techfoobar
}
var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
function jump(howHigh){
var currentVal = +localStorage.getItem("currentVal"); // + to cast to number
prevVal = currentVal;
currentVal = currentVal + 1;
localStorage.setItem("currentVal", currentVal); // store back
function X(){
this.prevVal=0;
this.currenVal=0;
}
X.prototype.jump = function(){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
...
//test:
var x1 = new X();
var x2 = new X();
x1.jump(1); // 0=>1
x2.jump(2); // 0=>2
x1.jump(3); // 1=>4
...
someVar = 0;
function increaseSomeVar(){
someVar++;
}
var someVar = 0;
function increaseSomeVar(somelocalVar){
somelocalVar++;
return(somelocalVar);
}
someVar = increaseSomeVar(someVar);
MyApp_HighlightAllOccurencesOfStringForElement.bind(this, element, keyword);
Giữ các biến giữa các lần thực thi hàm (Javascript)
var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
0var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
1_______1_______2var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
3var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
4var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
5var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
6
Cách sử dụng biến tĩnh trong hàm Javascript
var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
7var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
8var value = 0;
function next() {
return value++;
}
console.log(next());
console.log(next());
9
truyền biến từ hàm này sang hàm khác
function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
0function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
1_______2_______1function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
3function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
4function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
5function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
6
Blog phần mềm của Benohead
function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
7function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
8function Counter() {
this.value = 0;
}
Counter.prototype.next = function() {
return this.value++;
};
var counter = new Counter();
console.log(counter.next());
console.log(counter.next());
9this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
0this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
1this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
2this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
3_______3_______4_______3_______5this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
6this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
7this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
8this.prevVal = 0;
this.currentVal = 0;
function jump(howHigh){
this.prevVal = this.currentVal;
this.currentVal = this.currentVal + 1;
9
Hàm JavaScript dưới dạng biến JavaScript
var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
0_______4_______1var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
2_______4_______3_______4_______4var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
5var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
6var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
7
5 Cách Truyền Biến Giữa Các Trang Trong Javascript
var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8_______4_______8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8var prevVal = 0;
var currentVal = 0;
function jump(howHigh){
prevVal = currentVal;
currentVal = currentVal + 1;
8function jump(howHigh){
var currentVal = +localStorage.getItem("currentVal"); // + to cast to number
prevVal = currentVal;
currentVal = currentVal + 1;
localStorage.setItem("currentVal", currentVal); // store back
8function jump(howHigh){
var currentVal = +localStorage.getItem("currentVal"); // + to cast to number
prevVal = currentVal;
currentVal = currentVal + 1;
localStorage.setItem("currentVal", currentVal); // store back
9
Bài học tiếp theo Hướng dẫn PHP
Làm cách nào để lưu trữ giá trị vĩnh viễn trong JavaScript?
LocalStorage là một cách lưu trữ dữ liệu vĩnh viễn trong trình duyệt . Không giống như đặt một biến thông thường, nó không đặt lại khi bạn tải lại trang và bạn có thể truy cập cùng dữ liệu localStorage từ bất kỳ trang nào trên trang web của mình. LocalStorage là kho lưu trữ khóa-giá trị, nghĩa là bạn lưu trữ dữ liệu bằng khóa.
Làm cách nào để lưu trữ giá trị trong JavaScript?
Lưu trữ dữ liệu trong Trình duyệt bằng JavaScript .
setItem(key, value) lưu cặp khóa/giá trị
getItem(key) nhận giá trị theo khóa
removeItem(key) xóa khóa và giá trị
clear() xóa mọi thứ khỏi bộ lưu trữ
khóa (chỉ mục) lấy khóa từ một vị trí nhất định
chiều dài số lượng các mặt hàng được lưu trữ
Làm cách nào để giữ lại các giá trị trong JavaScript sau khi gửi lại?
bạn có thể sử dụng đối tượng ViewState hoặc Phiên để giữ lại giá trị bộ đếm giữa các lần gửi lại . hy vọng nó giúp. /. Sử dụng các trường ẩn để lưu trữ giá trị của các đối tượng javascript và truy xuất chúng sau khi gửi lại. Sử dụng các trường ẩn để lưu trữ giá trị của các đối tượng javascript và truy xuất chúng sau khi gửi lại.
Làm cách nào để giữ giá trị sau khi tải lại trang trong JavaScript?
Cách dễ nhất để tải lại trang hiện tại mà không làm mất bất kỳ dữ liệu biểu mẫu nào trong Javascript là sử dụng localStorage . JavaScript là một trong những ngôn ngữ lập trình được sử dụng rộng rãi bởi các nhà phát triển. Nó bổ sung các chức năng động cho các trang web tĩnh và giúp các nhà phát triển tạo các trang web tương tác.