如果您关闭互联网并通过 Chrome 访问 YouTube,您可以看到此页面(前提是该站点之前已在此浏览器中至少加载过一次):
我尝试过 Mozilla、Opera - 没有这样的东西。
这个怎么运作?
在什么情况下可以安全地将 HTML 添加为一行,什么时候应该避免这种方法?然后用什么来代替它们?
用户输入一个从中获取关键字的字符串,为此预先准备了一个类似名称的函数。有没有什么方法可以调用它eval()?
bubu("http://One.com/bubu.png");
function bubu(str) {
let key = (str.match(/(One|Two|Three)/ig) || ["Other"])[0];
window["handle" + "Test"](); // Работает для глобальной функции
bubu["handle" + key](); // Error. Где же сохраняется функция?
// *Должен сработать handleOne()
function handleOne() { console.log( 'one' ); }
function handleTwo() { console.log( 'two' ); }
function handleThree() { console.log('three'); }
function handleOther() { console.log('other'); }
}
function handleTest() { console.log( 'Window-test' ); }
ps 好吧,功能代码稍微复杂点和多样化,导致无法创建一个带参数的)
我想创建一个漂亮的函数,以便可以使用一个“调用链”创建和返回嵌套的 HTML 元素。
结果是函数调用(并且插入按应有的方式工作),但是在调用的最后,如何立即返回第一个创建的元素是个问题。
原来是这样的:
let html = nestHTML('div', 111)('div', 222)('div', 333, 'moo')('div', 444);
test.appendChild( html.bubu.parentNode.parentNode.parentNode );
function nestHTML(tag, textContent, className) {
let elem = document.createElement(tag);
elem.textContent = textContent || "";
elem.className = className || "";
if( nestHTML.bubu ){
nestHTML.bubu.appendChild(elem);
nestHTML.bubu = elem;
} else {
nestHTML.bubu = elem;
}
return nestHTML;
}
section div {
border: 2px solid orange;
padding: 5px;
}
.moo {
border-color: red;
}
<section id="test"></section>
我想将一些较短的东西转移到主要的 appendChild。
(可以使用数组参数创建一个函数,但在这里,包括体育兴趣)。
将光标悬停时,像素的颜色应显示在相邻块中。
问题:画布的高度是 300px,当悬停在上半部分时,颜色会显示为整个画布。在下半部分,它到处都是黑色的。
如果你在最后写它可以正常工作let y = (e.pageY - coor.y)/2;为什么会这样?
let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');
let grd = ctx.createLinearGradient(0, 0, 300, 0);
grd.addColorStop(0, '#f00');
grd.addColorStop(0.286, '#ff0');
grd.addColorStop(0.429, '#0f0');
grd.addColorStop(0.521, '#0ff');
grd.addColorStop(0.714, '#00f');
grd.addColorStop(0.857, '#f0f');
grd.addColorStop(1, '#f00');
let grd2 = ctx.createLinearGradient(150, 0, 150, 300);
grd2.addColorStop(0, '#0000');
grd2.addColorStop(0.1, '#0000');
grd2.addColorStop(0.5, '#aaaf');
grd2.addColorStop(1, '#aaaf');
ctx.fillStyle = grd;
ctx.fillRect(0, 0, 300, 300);
ctx.fillStyle = grd2;
ctx.fillRect(0, 0, 300, 300);
let rect = canvas.getBoundingClientRect();
let coor = {
x: rect.left,
y: rect.top
}
let block = document.getElementById('block');
canvas.addEventListener('mousemove', function(e){
let x = e.pageX - coor.x;
let y = e.pageY - coor.y; // <=====
let d = ctx.getImageData(x, y, 1, 1).data;
let rgb = `RGB(${d[0]},${d[1]},${d[2]})`;
block.style.backgroundColor = rgb;
});
#canvas {
width: 300px;
height: 300px;
margin-left: 60px;
}
#block {
position: absolute;
top: 0; left: 0;
width: 50px;
height: 50px;
background-color: red;
}
<canvas id="canvas"></canvas>
<div id="block"></div>
有一个预定义的单词列表。用户开始打字。一旦程序找到与{bor;b或的匹配 b项 - 就会弹出一个窗口,其中列出所有以字母b开头的给定单词
取自这里的想法 - https://liveweave.com/(例如输入 <a)
也许您只需要知道一些棘手的功能?其实关键问题是获取打印出来的最后两个字符的值(也可能在文本中间)。剩下的就是细节。
我正在尝试制作个人 HTML 编辑器。使用 textarea 一切正常: ( CodePen-1 )
如果未选择任何内容 - 仅在键入文本的末尾添加标签。如果您选择文本 - 当您单击按钮时,文本将放置在标签内。
<button title="division" class="tag" onclick="tag('<div>','</div>');">div</button>
<textarea id="form"></textarea>
JS:
function tag(a,b){
var x = document.getElementById('form');
x.focus();
var value = $("#form").val();
var start=x.selectionStart;
var end=x.selectionEnd;
var selected = a + value.substr(start,end-start) + b;
$("#form").val( value.substr(0,start) + selected + value.substr(end) );
}
但是 Textarea 的内部不能以任何方式着色或突出显示,因此需要制作一个可编辑的 div,其中已经可以突出显示关键字或标签。但是 selectionStart 和 selectionEnd 在这里不起作用(CodePen-2):
<button title="division" class="tag" onclick="tag('<div>','</div>');">div</button>
<div id="form" contenteditable="true"></div>
JS:
function tag(a,b){
var x = document.getElementById('form');
var value = $("#form").text();
var start = x.selectionStart;
var end = x.selectionEnd;
var selected = a + value.substr(start,end-start) + b;
$('#form').text( value.substr(0,start) + selected + value.substr(end) );
x.focus();
}
戳方法不起作用,目前尚不清楚我做错了什么。看来你只需要知道...
是否可以通过 JS / JQuery 实现?
我们有:
- http://example_1.com - 它所在的位置<div id="div-1">111</div>
- http://example_2.com - 它所在的位置<div id="div-2">222</div>
- http://example_3.com - 它所在的位置<div id="div-3">333</div>
您如何从不同的页面收集这些信息?比如说,如果有成百上千个这样的页面,要监控某事:将所有 div 及其内部收集在一页上。
*收集 - 我会自己收集。主要问题是 - 是否可以通过一些代码编写这样的东西:
url('http://example_1.com').getElementById("div-1").innerHTML;
该数字位于<input>或下方,<div>并根据用户的操作而变化。没关系。重要的是,大数字不显示为 200000000,而是显示为 200,000,000 或 200.000.000
例如,您可以创建多个彼此相邻的输入,并在每个输入中显示一个与整数不同的数字,但是您会得到过于混乱的公式:
value = Math.floor(число/10000000);
value = Math.floor((Число - Math.floor(число/10000000)*10000000))/1000000);
等等,您还必须考虑数字中的字符数(例如 200,000,000,可能有 10,000 或其他),并为每个字符数分别编写公式。也许有更简单的方法?
UPD:实际上,将伊万的回答应用于我的问题,解决方案是:
<input id="input" value="100000000">
<script>document.getElementById("input").value = new Intl.NumberFormat('ru-RU').format( document.getElementById("input").value );</script>