- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在制作名为 Dots and Boxes 的游戏。
网格上有一堆点:
<table>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
</table>
当你点击框的一侧时,它变成黑色:
function addLine(obj) {
console.log("Called")
if (obj.style.backgroundColor != "black") {
obj.style.backgroundColor = "black";
changeTurn()
}
一旦你点击第四边,关闭盒子,盒子就会变成点击第四边的玩家的颜色:
目前,玩家必须手动点击方框来改变它的颜色。但是,我希望当盒子周围的所有四个边都是黑色时,它会自动用颜色填充盒子。
如何使用 Javascript 中的函数来检查框的上方、下方、左侧和右侧的行是否填充为黑色?
var playerTurn = "Blue";
changeTurn();
var number = 0;
function addLine(obj) {
console.log("Called")
if (obj.style.backgroundColor != "black") {
obj.style.backgroundColor = "black";
changeTurn()
}
}
function fillBox(obj) {
if (playerTurn == "Blue") {
obj.style.backgroundColor = "red";
}
else if ( playerTurn == "Red") {
obj.style.backgroundColor = "blue";
}
}
function changeTurn() {
if (playerTurn == "Red") {
playerTurn = "Blue";
document.getElementById('turn').style.color = "blue";
}
else if (playerTurn == "Blue") {
playerTurn = "Red";
document.getElementById('turn').style.color = "red";
};
console.log(playerTurn);
document.getElementById('turn').innerHTML = playerTurn + "'s Turn";
}
h3 {
font-family: Arial;
}
table {
border-collapse: collapse;
}
.vLine {
width: 10px;
height: 60px;
}
.box {
width: 60px;
height: 60px;
}
.hLine {
width: 60px;
height: 10px;
}
.gap {
width: 10px;
height: 12px;
background-color: black;
}
.vLine:hover, .hLine:hover {
background-color: black;
}
<h3 id="turn"></h3>
<table>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
<td class="box" onclick="fillBox(this)"></td>
<td class="vLine" onclick="addLine(this)"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
<td class="hLine" onclick="addLine(this)"></td>
<td class="gap"></td>
</tr>
</table>
最佳答案
这相当简单,尽管它需要很好地使用 DOM 遍历。
当您单击一条线时,最多只有 两个 可能的框可以填充。对于水平线,它们是上方和下方的框,这需要跳行。对于垂直线,左和右。
对于这些框中的每一个,我们需要确认四行。同样,我们必须跳转上方和下方的行。
实际上,我已经重新制作了这款游戏,大部分是因为它很有趣,而且有很多东西需要学习。那么让我们来看看重要的部分。我们将避免这段代码中的不良形式,例如内联处理程序和直接在元素上设置样式,我们将让 CSS 类充当控件,尽管更完整的选项是 data-attributes
。
让我们从两个基本的辅助函数开始。
第一个用于将类似数组的对象转换为实际的数组,因此我们可以对它们使用 Array.prototype
方法。我们主要在 nodeList
对象上使用它。
function toArray (o) {
return Array.prototype.slice.call(o);
}
第二个利用第一个,并为我们提供元素在其 parentNode
中的位置。
function nodeIndex (node) {
return toArray(node.parentNode.children).indexOf(node);
}
接下来,我们的事件处理程序。他们彼此非常相似。当我们点击一行时,我们用另一个辅助函数 fill
填充该行,它向名为 .filled
的行添加一个新类。然后我们检查可以填写的框。对于水平线,即上方和下方的垂直框;对于水平框的垂直线,左和右。我们删除了事件监听器,因此只能单击一次行。
function addHLine (e) {
fill(this);
this.removeEventListener(e.type, addHLine);
checkVerticalBoxes(this);
updateGame();
}
function addVLine (e) {
fill(this);
this.removeEventListener(e.type, addVLine);
checkHorizontalBoxes(this);
updateGame();
}
现在让我们看看 checkHorizontalBoxes
和 checkVerticalBoxes
。水平框位于同一行,从我们的起始行开始索引 +/-1
。垂直框位于从我们的起始行开始索引为 +/-1
的行中,并与该行共享相同的索引。我们有一些 if
语句,因为有时可能的行或框会越界。
function checkHorizontalBoxes (line) {
var left = line.previousElementSibling,
right = line.nextElementSibling;
if (left) checkSurroundingLines(left);
if (right) checkSurroundingLines(right);
}
function checkVerticalBoxes (line) {
var index = nodeIndex(line),
up = line.parentNode.previousElementSibling,
down = line.parentNode.nextElementSibling;
if (up) checkSurroundingLines(up.children[index]);
if (down) checkSurroundingLines(down.children[index]);
}
这两个函数都在潜在的框上调用 checkSurroundingLines
。此函数调用另外两个函数 - checkVerticalLines
和 checkHorizontalLines
。开始看到模式了吗? isFilled
类似于fill
,它是我们定义的辅助函数,用于测试一行是否具有类.filled
。
function checkHorizontalLines (node, idx) {
var left = node.previousElementSibling,
right = node.nextElementSibling;
return isFilled(left) && isFilled(right);
}
function checkVerticalLines (node, idx) {
var row = node.parentNode,
up = row.previousElementSibling.children[idx],
down = row.nextElementSibling.children[idx];
return isFilled(up) && isFilled(down);
}
如果两者都返回 true
,我们将填充我们的框。
这是这种 DOM 遍历的基本逻辑。实际代码还有一些额外的内容,因此请阅读所有部分。
这是工作游戏:
// Player objects
function Player (name, className, scoreBox) {
this.name = name;
this.className = className;
this.scoreBox = scoreBox;
this.score = 0;
}
// State
var players = [new Player('Blue', 'blue-mark', 'p1'),
new Player('Red', 'red-mark', 'p2')],
currentPlayerIdx = 0,
currentPlayer = players[currentPlayerIdx],
turnBox = document.getElementById('turn');
// Helpers
function toArray (o) {
return Array.prototype.slice.call(o);
}
function nodeIndex (node) {
return toArray(node.parentNode.children).indexOf(node);
}
function fill (el) {
el.classList.add('filled');
}
function isFilled (el) {
return el.classList.contains('filled');
}
// Checks
function checkHorizontalLines (node, idx) {
var left = node.previousElementSibling,
right = node.nextElementSibling;
return isFilled(left) && isFilled(right);
}
function checkVerticalLines (node, idx) {
var row = node.parentNode,
up = row.previousElementSibling.children[idx],
down = row.nextElementSibling.children[idx];
return isFilled(up) && isFilled(down);
}
function checkSurroundingLines (node) {
var idx = nodeIndex(node),
surrounded = checkVerticalLines (node, idx) && checkHorizontalLines(node, idx);
if (surrounded) {
node.classList.add('marked');
node.classList.add(currentPlayer.className);
return true;
}
}
function checkHorizontalBoxes (line) {
var left = line.previousElementSibling,
right = line.nextElementSibling;
if (left) checkSurroundingLines(left);
if (right) checkSurroundingLines(right);
}
function checkVerticalBoxes (line) {
var index = nodeIndex(line),
up = line.parentNode.previousElementSibling,
down = line.parentNode.nextElementSibling;
if (up) checkSurroundingLines(up.children[index]);
if (down) checkSurroundingLines(down.children[index]);
}
// State sets
function setInfo () {
turnBox.className = currentPlayer.className;
turnBox.innerHTML = currentPlayer.name + "'s Turn";
players.forEach(function (p) {
document.getElementById(p.scoreBox).innerHTML = p.score;
});
}
function getScores() {
players.forEach(function (p) {
p.score = document.querySelectorAll('.box.marked.'+p.className).length;
});
}
function changeTurn () {
currentPlayerIdx = 1 - currentPlayerIdx;
currentPlayer = players[currentPlayerIdx];
setInfo();
}
function updateGame() {
getScores();
changeTurn();
}
// Events
function addHLine (e) {
fill(this);
this.removeEventListener(e.type, addHLine);
checkVerticalBoxes(this);
updateGame();
}
function addVLine (e) {
fill(this);
this.removeEventListener(e.type, addVLine);
checkHorizontalBoxes(this);
updateGame();
}
function assignHandler (sel, ev, fn) {
var els = document.querySelectorAll(sel);
toArray(els).forEach(function (el) {
el.addEventListener(ev, fn);
});
}
assignHandler('.hLine', 'click', addHLine);
assignHandler('.vLine', 'click', addVLine);
setInfo();
h3 {
font-family: Arial;
}
table {
border-collapse: collapse;
}
.vLine {
width: 10px;
height: 60px;
}
.box {
width: 60px;
height: 60px;
}
.hLine {
width: 60px;
height: 10px;
}
.gap {
width: 10px;
height: 12px;
background-color: #333;
}
.vLine:not(.filled):hover,
.hLine:not(.filled):hover {
background-color: #333;
}
.filled {
background-color: grey;
}
.marked {
background-color: green;
}
.box.blue-mark {
background-color: #3355ff;
}
.box.red-mark {
background-color: #ff5533;
}
#turn.blue-mark,
#p1 {
color: #3355ff;
}
#turn.red-mark,
#p2 {
color: #ff5533;
}
<h3 id="turn"></h3>
<p class="counts">
<span id="p1"></span> -
<span id="p2"></span>
</p>
<table>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
<tr>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
<td class="box"></td>
<td class="vLine"></td>
</tr>
<tr>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
<td class="hLine"></td>
<td class="gap"></td>
</tr>
</table>
关于javascript - 检查周围的表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151150/
我需要根据需要动态设置文本区域,但它不想正常工作。 JQuery 会自行检查,但无法检查是否已检查。但是当您在第二个单选框内单击时,始终需要文本区域。我尝试了很多次让它工作,但它仍然有问题。我添加了“
我需要在 Django 中进行 API 调用(某种形式),作为我们所需的自定义身份验证系统的一部分。用户名和密码通过 SSL 发送到特定 URL(对这些参数使用 GET),响应应该是 HTTP 200
我将在我的可移植 C 代码中使用 #warning 来生成编译时警告。但并非所有平台都支持 #warning。有什么方法可以找到该平台是否支持 #warning。 #ifdef warning
我编写了一个函数来检查某个数字是否存在于某个区间内。停止搜索的最佳方法是什么?这个: for (i = a; i <= b; i++) { fi = f(i); if (fi == c) {
我想知道在 c 中是否有一种方法可以检查,例如在 for 函数中,如果变量等于或不等于某些字符,而不必每次都重复进行相等性检查。如果我没记错的话,以这种方式检查相等性是不正确的: if (a == (
我有如下日志功能 void log_error(char * file_name, int line_num, int err_code) { printf("%s:%d:%s\n", fil
使用 ssh-keygen 生成的 key 对在 macOS 上可以有不同的格式。 macOS 可读的标准 PEM ASN.1 对象 SecKey API 带有文本标题的 PEM OpenSSH ke
我正在尝试编写一个 excel if 语句。我不熟悉使用 Excel 具有的所有额外功能。我正在使用一个名为 importXML() 的函数.我正在尝试检查我正在使用的函数是否生成“#VALUE!”错
有没有办法检查是否没有 AIO 写入给定文件?我在我的 Unix 类(class)上制作了一个项目,该项目将是一个上下文无关(基于 UDP)的国际象棋服务器,并且所有数据都必须存储在文件中。应用程序将
我有一个如下所示的函数: public Status execute() { Status status = doSomething(); if (status != Stat
我正在使用 Composer,我不希望 PhpStorm 在 vendor 文件夹上运行任何错误检查或检查,因为它对 vendor/中的某些代码显示误报composer/autoload_static
Chapel 的一个很好的特性是它区分了数组的域和它的分布。检查两个数组是否具有相同的域和分布(通常想要的)的最佳方法是什么? 我能看到的最好的方法是检查 D1==D2和 D1.dist==D2.di
在我的 JavaScript 函数中,我为所有输入、文本区域和选择字段提供实际值作为 initial_value: $('input, textarea, select').each(function
我正在编写一个分解为几个简单函数的 PHP 类。在构造函数中,它调用另一个名为 processFile 的函数。该函数调用 5 个私有(private)函数并进行检查。如果检查失败,它会将消息分配给
这个问题已经有答案了: How to detect if user it trying to open a link in a new tab? (2 个回答) 已关闭 7 年前。 我认为 JavaS
我正在浏览我们的代码库并看到很多这样的测试: declare @row_id int = ... declare @row_attribute string select @row_attribu
我正在声明一个用作比较的函数。我的问题是: 为什么条件充当语句? 为什么第 4 行可以工作,而第 5 行却不行? 我知道这段代码不切实际且未使用,但为什么编译器允许这种语法? 谷歌没有找到答案。但话又
到目前为止,我有一个带有空文本字段的 PHP Kontaktform,并使用以下命令检查了所需的字段: $name = check_input($_POST['name'], "请输入姓名。"); 现
目前,我能想到的合理检查的唯一方法没有臃肿的逻辑: if ( $value > 0 ) { // Okay } else { // Not Okay } 有没有更好的办法? 最佳答案
我正在尝试运行一个脚本,如果 i 存在(意味着存在 i 值,任何值)或其他部分,我希望运行其中的一部分如果i没有值就运行,有人可以启发我吗? 我说的是 for 循环,比如 for (var i=0;
我是一名优秀的程序员,十分优秀!