我可以通过方法的 Repo.get!(Post, id) 通过它们的 id 从 ecto 获取元素。但是,如果我有与此标题类似的元素,我不会通过方法的 Repo.get_by!(Post, title: "title") 获取元素标题。请帮我按标题从回购中获取所有元素。
Alisa Bondarchuk's questions
我有一个创建下拉列表的代码。我需要根据这个按钮的id所在的数组给每个按钮添加一个类。那些。数组“A”和“B”中的按钮需要添加类“A”和“B”,而数组“C”和“D”中的按钮可以添加一个公共类。
const A = [
{ category: "Walls", id: "1", symbol: "Wall_102", family: "Basic Walls" },
{ category: "Walls", id: "2", symbol: "Wall-Ext_102", family: "Basic Walls" }
];
const B = [
{
category: "Window",
id: "3",
symbol: "Window-Ext_102",
family: "Basic Window"
},
{
category: "Walls",
id: "4",
symbol: "Wall-Other-102",
family: "Other Walls"
}
];
const C = [
{ category: "Walls", id: "5", symbol: "Wall-Ext_102", family: "Basic Walls" },
{ category: "Floor", id: "6", symbol: "Floor-Ext_102", family: "Basic Floor" }
];
const D = [
{ category: "Walls", id: "5", symbol: "Wall-Ext_102", family: "Basic Walls" },
{ category: "Walls", id: "6", symbol: "Wall-Ext_102", family: "Basic Walls" }
];
const data = [...A, ...B, ...C, ...D];
const result = data.reduce(
(acc, curr) => {
const { category, family, symbol, id } = curr;
acc.category[category] = acc.category[category] || { family: {} };
acc.category[category].family[family] = acc.category[category].family[
family
] || { symbol: {} };
acc.category[category].family[family].symbol[symbol] = acc.category[
category
].family[family].symbol[symbol] || { id: [] };
acc.category[category].family[family].symbol[symbol].id.push(id);
return acc;
},
{ category: {} }
);
let html = "";
for (let categoryKey in result.category) {
html += `<details><summary>${categoryKey}</summary>`;
for (let familyKey in result.category[categoryKey].family) {
html += `<details><summary>${familyKey}</summary>`;
for (let symbolKey in result.category[categoryKey].family[familyKey]
.symbol) {
let btn =
result.category[categoryKey].family[familyKey].symbol[symbolKey];
html += `<details><summary>${symbolKey}</summary>
${btn.id.map(id => `<button>${id}</button>`).join("")}
</details>
`;
}
html += `</details>`;
}
html += `</details>`;
}
document.body.innerHTML = html;
我有这样的数组。
const A = [{category: "Walls", id: "1"}, {category: "Walls", id: "2"}]; //first array
const B = [{category: "Window", id: "3"}, {category: "Walls", id: "4"}]; //second array
const C = [{category: "Walls", id: "5"}, {category: "Floor", id: "6"}]; //three array
const D = [{category: "Walls", id: "5"}, {category: "Walls", id: "6"}]; //four array
我需要创建一个这样的列表:
<details>
<summary>Walls</summary>
<button class="A">1</button>
<button class="A">2</button>
<button class="B">4</button>
<button class="B">5</button>
<button class="C">5</button>
<button class="D">6</button>
</details>
<details>
<summary>Window</summary>
<button class="B">3</button>
</details>
<details>
<summary>Floor</summary>
<button class="D">6</button>
</details>
问题是我不明白如何将必要的数据从 js 数组添加到 html 页面。我将非常感谢您的帮助。
我有一个有点复杂的问题,我会尽量描述清楚。因此,我从服务器中为我的两个模型获取了两个对象。这些对象包含类别字段、姓氏、模型元素标识符等。通过过滤,我得到 4 个数组。第一个和第二个数组存储唯一标识符,而第三个和第四个数组存储重复标识符。第一个数组包含第一个模型的唯一标识符。在第二个中 - 第二个数组是唯一的,在第三个和第四个中 - 分别是它们的共同元素。
为了说明这一点,我将给出以下示例。
const dataFirstModel = [{"revitid": "1"},{"revitid": "2"},{"revitid": "3"},{"revitid": "4"}];
const dataSecondModel = [{"revitid": "1"},{"revitid": "2"},{"revitid": "5"},{"revitid": "6"}];
从代码中可以看出,前两个revitids是一样的,最后一个是不同的。结果,通过过滤,我收到了以下数组:
[ //first array(difference)
{
revitid: 3
building: ""
level: ""
room: ""
viewid: 3302
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
},{
revitid: 4
building: ""
level: ""
room: ""
viewid: 3303
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
}
];
[ //second array(difference)
{
revitid: 5
building: ""
level: ""
room: ""
viewid: 3304
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
},{
revitid: 6
building: ""
level: ""
room: ""
viewid: 3305
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
}
];
[ //first array(similar)
{
revitid: 1
building: ""
level: ""
room: ""
viewid: 3300
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
},{
revitid: 2
building: ""
level: ""
room: ""
viewid: 3301
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
}
];
[ //second array(similar)
{
revitid: 1
building: ""
level: ""
room: ""
viewid: 3300
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
},{
revitid: 2
building: ""
level: ""
room: ""
viewid: 3301
category: "Walls"
family: "Basic Wall"
symbol: "Wall-Ext_102"
}
];
现在我需要将这些数组传递给 html 页面,我无法处理这个任务。
你需要像这样发送它。
- 单击时打开的类别按钮。可能有几个类别,例如,可能有一个类别的墙壁和屋顶。
- 打开的类别应该有一个打开的家庭财产按钮。
- 开放族必须具有符号属性的按钮。
- 单击具有符号属性的按钮后,应打开一个按钮列表,根据以下特征:
- 在最顶部应该有一个来自第一个数组的按钮,即 第一个模型的差异。这些按钮应具有紫色背景色和
onclick="firstModel(${viewid})"
. - 第一个数组中的按钮应位于第二个数组的按钮下方,但它们应具有绿色背景和
onclick="secondModel(${viewid})"
. - 接下来,第三个数组中的按钮应该紧随其后,具有橙色背景色和
onclick="firstModel(${viewid})"
. - 最后会有来自第四个数组的按钮,也是橙色背景,但带有
onclick="secondModel(${viewid})"
.
- 在最顶部应该有一个来自第一个数组的按钮,即 第一个模型的差异。这些按钮应具有紫色背景色和
最终结果应该是这样的列表:
类别
家庭
符号
按钮 按钮 按钮 按钮
其他类别
家庭
符号
按钮按钮
我将非常感谢您的帮助。感谢您的宝贵时间,如果您有任何问题,请随时联系。
我的情况很糟糕。我使用 express 和 axios,我想传递 promise 的值,但他们就是不能。有一个服务器文件、身份验证和购物篮。我在服务器文件中获取访问令牌变量,并且必须将其传递给购物车函数。当所有东西都写在一个文件中时,没有问题,当我用单独的身份验证文件编写时,也没有问题,但是当我写另一个单独的篮子文件时,就什么也没有了。
正文文件服务器
const path = require('path');
const express = require('express'); // For web server
const Axios = require('axios'); // A Promised base http client
const bodyParser = require('body-parser'); // Receive JSON format
const querystring = require('querystring');
let app = express();
app.use(bodyParser.json())
app.use(express.static(path.join(__dirname, 'public')));
const config = require('./config');
const PORT = config.credentials.PORT; // import from bim start.js
var FORGE_CLIENT_ID = 'ZqbXzFL8NMXtovqJrLG0O9f5Ar3nQRoE';
var FORGE_CLIENT_SECRET = 'PM4vPHZGQArq99qn';
const scopes = 'data:read data:write data:create bucket:create bucket:read';
app.use((err, req, res, next) => {
console.error(err);
res.status(err.statusCode).json(err);
})
认证文件
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
const config = require('../config');
var FORGE_CLIENT_ID = 'ZqbXzFL8NMXtovqJrLG0O9f5Ar3nQRoE';
var FORGE_CLIENT_SECRET = 'PM4vPHZGQArq99qn';
const scopes = 'data:read data:write data:create bucket:create bucket:read';
let router = express.Router();
router.use(bodyParser.json());
module.exports = oauth => {
return Axios({
method: 'POST',
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
headers: {
'content-type': 'application/x-www-form-urlencoded',
},
data: querystring.stringify({
client_id: FORGE_CLIENT_ID,
client_secret: FORGE_CLIENT_SECRET,
grant_type: 'client_credentials',
scope: scopes
})
})
}
在服务器文件中继续验证
let access_token = '';
var oauth = require('./routes/oauth')
app.get('/api/forge/oauth', function(req, res) {
oauth()
.then(function (response) {
// Success
// let's save token into the varible access_token
access_token = response.data.access_token;
console.log(response);
console.log(access_token);
// Then, the app is routed to, which creates a shared bucket for our app.
res.redirect('/api/forge/datamanagement/bucket/create');
})
.catch(function (error) {
// Failed
console.error(error);
res.send('Failed to authenticate');
});
});
篮子文件
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
const config = require('../config');
const bucketKey = config.credentials.client_id.toLowerCase() + '_my_first_full_viewer_bucket';
const policyKey = 'transient'; // Expires in 24hr
module.exports = bucketCreate => {
return Axios({
method: 'POST',
url: 'https://developer.api.autodesk.com/oss/v2/buckets',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + access_token
},
data: JSON.stringify({
'bucketKey': bucketKey,
'policyKey': policyKey
})
})
}
服务器文件中篮子部分的延续
var bucketCreate = require('./routes/bucketCreate')
app.get('/api/forge/datamanagement/bucket/create', function (req, res) {
bucketCreate()
.then(function (response) {
// Success
console.log(response);
res.redirect('/api/forge/datamanagement/bucket/detail');
})
.catch(function (error) {
if (error.response && error.response.status == 409) {
console.log('Bucket already exists, skip creation.');
res.redirect('/api/forge/datamanagement/bucket/detail');
}
// Failed
console.log(error);
res.send('Failed to create a new bucket');
});
});
我无法将服务器文件中的 access_token 值传递到购物篮文件,在那里将进行进一步的操作。我也无法将此变量传递给身份验证文件,所以我四处走动,在服务器文件中获取了部分身份验证文件,并使用服务器文件中的 access_token 执行了操作。错误代码 401(如果我没记错的话,还是 403)。无论如何,我将感谢您的帮助。
该问题与将 server.js 文件拆分为模块有关。我正在使用 autodesk.forge 平台查看器,并根据我创建此查看器的文档。要创建服务器,使用 express 和 axios(嗯,其他技术,但问题与提到的技术有关)。我还创建了一个公用文件夹,其中包含一个带有身份验证超链接的 html 文件。
下面是工作代码。
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
let app = express();
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, '/public')));
const config = require('./config');
const PORT = config.credentials.PORT;
app.set('port', 3000);
let server = app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
let access_token = '';
if (process.env.FORGE_CLIENT_ID == null || process.env.FORGE_CLIENT_SECRET == null) {
console.error('Missing FORGE_CLIENT_ID or FORGE_CLIENT_SECRET env. variables.');
return;
}
app.get('/api/forge/oauth', function (req, res) {
Axios({
method: 'POST',
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
headers: {
'content-type': 'application/x-www-form-urlencoded',
},
data: querystring.stringify({
client_id: config.credentials.client_id,
client_secret: config.credentials.client_secret,
grant_type: 'client_credentials',
scope: config.scopes.internal
})
})
.then(function (response) {
// Success
// let's save token into the varible access_token
access_token = response.data.access_token;
console.log(response);
// Then, the app is routed to, which creates a shared bucket for our app.
res.redirect('/api/forge/datamanagement/bucket/create');
})
.catch(function (error) {
// Failed
console.log(error);
res.send('Failed to authenticate');
});
});
<body>
<main id="main">
<a href="/api/forge/oauth">Authorize me!</a>
</main>
</body>
将此代码拆分为模块后,它停止工作,这是修改后的server.js
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
let app = express();
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));
const config = require('./config');
const PORT = config.credentials.PORT;
app.use('/api/forgee', require('./routes/oauth'));
app.use((err, req, res, next) => {
console.error(err);
res.status(err.statusCode).json(err);
});
let server = app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
这是它的 oauth.js 模块
const path = require('path');
const express = require('express');
const Axios = require('axios');
const querystring = require('querystring');
const config = require('../config');
let router = express.Router();
let access_token = '';
if (process.env.FORGE_CLIENT_ID == null || process.env.FORGE_CLIENT_SECRET == null) {
console.error('Missing FORGE_CLIENT_ID or FORGE_CLIENT_SECRET env. variables.');
return;
}
router.get('/api/forge/oauth', function (req, res) {
Axios({
method: 'POST',
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
headers: {
'content-type': 'application/x-www-form-urlencoded',
},
data: querystring.stringify({
client_id: config.credentials.client_id,
client_secret: config.credentials.client_secret,
grant_type: 'client_credentials',
scope: config.scopes.internal
})
})
.then(function (response) {
// Success
// let's save token into the varible access_token
access_token = response.data.access_token;
console.log(response);
res.redirect('/api/forge/datamanagement/bucket/create');
})
.catch(function (error) {
// Failed
console.log(error);
res.send('Failed to authenticate');
});
});
module.exports = router;
分成模块的代码是这样工作的:服务器从 3000 端口开始,页面显示为一个超链接,点击它后,一个页面打开,显示文本“Cannot GET /api/forge/oauth”。我检查并确保主文件中包含 oauth.js 模块,但我不明白为什么 axios 找不到 /api/forge/oauth 页面。
服务器文件对我来说没有问题,但是当我将其拆分为模块时,就会出现问题。
我有一个文本输入字段。此字段中有一个标签。当我单击文本输入字段时,标签会上升并输入我的文本,但在我输入后(即当我用鼠标单击屏幕上的某个位置时),标签会下降到它的位置并因此落在输入的文本。帮助确保在填写该字段时,标签保留在原位。
PS 没有 JS 代码,但如果有必要,那我们就用纯 JS。
input {
margin: 50px;
width: 17%;
}
label {
margin: 50px;
position: absolute;
left: 5px;
}
input:focus ~ label, input.used ~ label {
top: -20px;
}
<!DOCTYPE html>
<html><head>
<link href="./text.css" rel="stylesheet"></head>
<body>
<input type="text" id="text"><span class="highlight"></span><span
class="bar"></span>
<label for="text">TEXT</label>
</body></html>
我有一个大的。有一个按钮列表,有它们的开关(通过这个列表向前和向后),还有一个搜索字段,您可以通过它找到所需的按钮。在屏幕上切换按钮时,会记录当前列表按钮的名称。按按钮名称搜索时,如果名称正确,则在屏幕上显示按钮名称,如果搜索不成功,则显示输入错误信息。搜索前,切换按钮正常工作(即当您按下前进或后退时,屏幕上会出现当前按钮的名称),搜索失败后它们通常工作相同,但搜索成功后出现大问题- 切换按钮停止运行,即 您切换到的按钮名称不会显示在屏幕上。浏览器控制台给出错误。
请帮助,我一直在努力解决这个问题超过 6 个小时,但没有结果。
Uncaught TypeError: Cannot set property 'innerText' of null
at i.js:45
at NodeList.forEach (<anonymous>)
at HTMLButtonElement.<anonymous>
如果有人需要,我可以发送js,但我认为它不会有帮助。
我有一个 JSON 文件,我需要获取骨灰盒的所有元素;
[
{
"name": "One",
"children": [{
"urn": "urnOne"
}, {
"name": "ChildrenOne",
}
]
}, {
"name": "Two",
"children": [{
"urn": "urnTwo"
}, {
"name": "ChildrenTwo",
}
]
}
]
我的代码无法处理它。
fetch('./viewables.json')
.then(response => ./json.json())
.then(data => {
data.forEach((el, i) => {
data[i].children.urn;
})
});
我们需要一个纯JS中的简单按钮状态开关。
例如有4 个按钮,前两个应该可见,后两个应该隐藏。还有两个切换按钮"вперёд" и "назад"
。
有必要在按下按钮"вперёд"
时,如果当前按钮,例如“按钮可见”按钮是可见的,那么它仍然是可见的,如果它是隐藏的,例如,我们已经到达按钮Button Hidden One
,那么它应该出现在两个可见按钮的底部,即 底部Button Visible
一和Button Visible Two
。
当切换到4时,按钮 - 3应该滚下(即从 切换Button Hidden One
到 时Button Hidden Two
,Button Hidden One
它应该滚下),并且4会出现在它的位置。当使用按钮从第一个按钮切换到最后一个按钮时, 4 个不可见按钮应出现在2 个"назад"
可见按钮的底部,即 在底部,应该出现。 Button Visible One
Button Visible Two
Button Hidden Two
<!-- Cписок с кнопками -->
<ul>
<li><button class="btn" />Button Visible One</li>
<li><button class="btn" />Button Visible Two</li>
<li><button class="btn" />Button Hidden One</li>
<li><button class="btn" />Button Hidden Two</li>
</ul>
<!-- Кнопки для передвижения -->
<button id="previous">Previos</button>
<button id="next">Next</button>
请帮帮我。在单击相邻 div-e 中的按钮时,必须显示该按钮的名称。您需要使用纯 JS 和类(如果可能)来实现这一点,因为按钮没有 id,但我不使用 TagName 来实现,因为还有其他按钮。
HTML
<div class="result><p><Здесь должен быть отображён name кнопки</p></div>
<ul>
<li class="slide"><button name="N102" class="btn"/>Button 1</li>
<li class="slide"><button name="N104" class="btn"/>Button 2</li>
<li class="slide"><button name="N106" class="btn"/>Button 3</li>
<li class="slide"><button name="N108" class="btn"/>Button 4</li>
</ul>
它适用于我的搜索,但我无法通过单击按钮来解决。
var object = {
"N102 - Number 102": {name: "1N02 - Number 102"},
"B152 - Bar 152": {name: "B152 - Bar 152"},
"N104 - Number 104": {name: "N104 - Number 104"},
"A126 - A 126": {name: "A126 - A 126"},
"N100 - Number 100": {name: "N100 - Number 100"},
"A156 - A 156": {name: "A156 - A 156"},
"N155 - Number 155": {name: "N155 - Number 155"},
"C110 - C 110": {name: "C110 - C 110"}
};
这样我就可以从整个对象中得到最大和最小的数字:
var a = Object.keys(object).map(x => +x.match(/\d+/));
console.log(Math.min(...a));
console.log(Math.max(...a));
帮助从包含字母 N 和单词 Number 的键中仅获取最小和最大数字。在这种情况下,它应该是 100 和 104。
请帮帮我。我有一个搜索字段和一个对象:
// Перебираю атрибут name у кнопок и добавляю их в объект
let elements = document.querySelectorAll('.btn');
let objects = {};
for (let i = 0; i < elements.length; i++) {
const button = elements[i];
objects[[button.name]] = {
name: button.name
};
}
// Создаю поиск
var form = document.querySelector('#search');
form.addEventListener('submit', function(event) {
event.preventDefault();
var data = new FormData(form);
var num = data.get('num');
console.log(num)
var numfull = data.get('num')
if (objects[num]) {
console.log(objects[num]);
// document.location.replace(objData2[num]);
} else if (objects[numfull]) {
console.log(objects[numfull]);
} else {
console.log('Not found');
}
});
<div class="search">
<form id="search">
<input type="text" name="num" placeholder="Search">
<button type="submit">Submit</button>
</form>
</div>
例如,有一个对象
{
N01 - Number 01: {name: "N01 - Number 01"}
N15 - Number 15: {name: "N15 - Number 15"}
}
在搜索中,他们在控制台中输入了数字 15,显示了一个对象{name: "N15 - Number 15"}
,他们输入了数字 01,在控制台中显示了该对象{name: "N01 - Number 01"}
。
任何帮助都会有所帮助,在此先感谢。
热心帮助。我有这样一个“困难”的情况。我使用 JS 创建了两个按钮,为它们添加了名称,但我无法添加角色。
var ul = document.querySelector('#ul');
var li = document.createElement('li');
li.className = 'li';
var button = document.createElement('btn');
button.className = 'btn-class';
button.name = 'name';
写的时候button.role= 'role';
什么都不加。
请帮帮我。
请帮帮我。我有这种情况,有一个对象包含一个以字母 H 开头的元素列表,后跟一个数字,然后是单词 '- num ',然后是一个数字,例如:
var obj = {
H0 - num0: {name: foo, id: func}
H1 - num1: {name: val, id: value}
H2 - num2: {name: constant, id: cnst}
}
我需要创建一个仅通过数字(数字)找到对象的搜索,例如,我在搜索中输入 2,它会返回对象 H2 - num2: {name: constant, id: cnst}。我已经有了现成的搜索,但我不知道如何仅通过数字获取对象。
const objData = [...document.getElementsByClassName('btn')].reduce((a, c, i ) =>
(a['H' + i + ' - num ' + i] = {name: c.name, id: c.id}, a), {});
var form = document.querySelector('#search');
form.addEventListener('submit', function(event) {
event.preventDefault();
var data = new FormData(form);
var num = data.get('num');
if (objData[num]) {
console.log(objData[num]);
} else {
console.log('Not found');
}
});
<ul>
<li><button class="btn" name="foo" id="func"/>foo</li>
<li><button class="btn" name="val" id="value"/>val</li>
<li><button class="btn" name="constant" id="cnst"/>constant</li>
</ul>
<div class="search">
<form id="search">
<input type="text" name="num" placeholder="Huisnummer">
<button type="submit">Submit</button>
</form>
</div>
任何帮助都会有所帮助,在此先感谢。
热心帮助。我有这种情况,HTML文件中有两个不同id的按钮,我需要获取所有按钮的所有id,类为.btn并将它们传递给我可以访问的js中的外部对象,但我不明白如何实现这一切。然后我需要这个对象以便从中提取 id 进行搜索。任何帮助都会有所帮助,在此先感谢。
HTML 文件
<ul>
<li><button id="but1">ButtonOne</button></li>
<li><button id="but2">ButtonTwo</button></li>
</ul>
js最终文件
objData = {
id: but1,
id: but2
}
请帮帮我。我有这样的情况,有一个文件包含一个带有数字的对象。在 html 文件中,我有一个字段和一个搜索按钮。需要在搜索字段中输入数字并按下搜索按钮后,使用 js 文件的可用数字进行搜索。
任何帮助都会有所帮助,在此先感谢。
PS 找到后需要自动跳转到找到对象的页面。
热心帮助。我有这样的情况,有两个不同name
-s的按钮,id
在一个HTML文件中,我需要id
把这name
两个按钮传给js,并添加到对象中(最好立即实现这个作为传给对象) . 任何帮助都会有所帮助,在此先感谢。
<ul>
<li><button name="button1" id="1">ButtonOne</button></li>
<li><button name="button2" id="2">ButtonTwo</button></li>
</ul>
我有 2 个用 HTML 创建的按钮,它们有自己的id
,name
我需要确保它们从中获取文本name
button
,我认为为此我必须从 HTML 传递id
到name
button
JavaScript 和从 JS 生成按钮文本到 HTML 文件,但我不知道该怎么做。无论如何,我将非常感谢您的帮助。