- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个函数,该函数会根据搜索结果给我一个匹配百分比,例如,如果搜索与我的数组中的 2/9 字段匹配,那么我将获得该匹配的适当百分比,因此如果它匹配从 9/9 的数组收缩,它将显示 100%。
代码如下:
https://jsfiddle.net/f45gfx2p/2/
HTML:
<!DOCTYPE html>
<!-- This is standard HTML code that tells the browser it is a HTML page-->
<html lang="en-GB">
<!-- This tells the browser what language html is using-->
<head>
<!-- standard html tag -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<link href="css/style.css" rel="stylesheet" type="text/css">
</script>
<link href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz' rel='stylesheet' type='text/css'>
<title>Any Phone4You</title>
</head>
<body>
<header class="header">
<h1>Any Phone4You</h1>
</header>
<div class="main"></div>
<div class="search">
<form>
<fieldset>
<legend>Select phone brand</legend>
<label for="sony">Sony</label>
<input type="radio" name="brand" class="phone" value="Sony">
<label for="motorola">Motorola</label>
<input type="radio" name="brand" class="phone" value="Motorola">
<label for="samsung">Samsung</label>
<input type="radio" name="brand" class="phone" value="Samsung">
<label for="apple">Apple</label>
<input type="radio" name="brand" class="phone" value="Apple">
<label for="lg">LG</label>
<input type="radio" name="brand" class="phone" value="LG">
</fieldset>
<label for="phone_model">Model</label>
<input type="text" id="phone_model" />
<fieldset>
<legend>Select a network</legend>
<label for="zmobile">Z-Mobile</label>
<input type="radio" name="net" class="network" value="Z-Mobile">
<label for="o3">O3</label>
<input type="radio" name="net" class="network" value="O3">
<label for="fodavone">Fodavone</label>
<input type="radio" name="net" class="network" value="Fodavone">
<label for="nn">NN</label>
<input type="radio" name="net" class="network" value="NN">
</fieldset>
<input type="range" name="rating" min="0" max="1000" value="0" step="50" id="range.slider" /> <span id="range">0</span>
<br />
<br />
<label for="text_m">Text</label>
<input type="text" id="text_m" />
<label for="internet">Data</label>
<input type="text" id="internet" />
<label for="upcost">Upfront Cost</label>
<input type="number" id="upcost" />
<label for="month_cost">Monthly Cost</label>
<input type="number" id="month_cost" />
<label for="contract_length">Contract Length</label>
<input type="number" id="contract_length" />
<input type="button" value="click me" id="login">
</form>
</div>
<footer>@Copyright Reserved by Przemyslaw Wojtas @2015-2016 !Do not copy!</footer>
<script type="text/javascript" src="js/javascript.js"></script>
</body>
</html>
CSS:
html {
margin: 0;
padding: 0;
}
body {
margin: 0;
padding: 0;
}
.margin {
margin-left: auto;
margin-right: auto;
}
.textalign {
text-align: left;
}
.textalign2 {
text-align: center;
}
.header {
top: 2%;
height: 20%;
width: 100%;
background-color: rgb(39, 133, 203);
color: white;
font-size: 36px;
font-family:'Yanone Kaffeesatz', sans-serif;
display: inline-block;
}
h1 {
left: 5%;
padding-top: 1%;
padding-left: 1%;
margin: 0;
}
.main {
float: right;
width: 80%;
height: 1000px;
background-color: rgb(98, 204, 255);
}
.search {
float: left;
width: 20%;
height: 1000px;
background-color: rgb(39, 133, 203);
opacity: 0.9;
}
footer {
clear: both;
bottom: 0px;
width: 100%;
font-family:'Yanone Kaffeesatz', sans-serif;
}
fieldset {
display: block;
}
form {
font-size: 16px;
width:100%;
border: 1px solid;
box-shadow: 10px 10px 5px #000000;
background-color:rgba(255, 255, 255, 0.4);
}
/* this will style my form */
input, select, textarea {
display: block;
margin:2%;
}
/* this style all input, select and textarea tags */
input {
border:2px solid #CCC;
width: 70%;
margin-top: 2%;
}
/* further styling to input tag */
textarea {
width:50%;
border:3px solid #CCC;
}
/* further styling to textarea tag */
/*
overflow-y: scroll;
height: 200px;
*/
JS:
/*
var brand=["Motorola","Nokia","Apple","Apple","Samsung","Samsung","LG","Nokia","LG","Sony","Sony"];
var model=["StarTAC","3310","iPhone 5C","iPhone 5C","Galaxy S5","Galaxy S5","G3","Lumia 925","Optimus L7 2","Xperia Z3","Xperia Z3"];
var network=["Z-Mobile","O3","Fodavone","NN","O3","Fodavone","NN","Fodavone","NN","O3","NN"];
var minutes=["300","100","300","1000","500","600","1000","600","250","Unlimited","Unlimited"];
var texts=["3500","5000","Unlimited","Unlimited","Unlimited","Unlimited","Unlimited","Unlimited","5000","Unlimited","Unlimited"];
var data=["N/A","N/A","250MB","2GB","500MB","1GB","1GB","500MB","500MB","1GB","10GB"];
var ucost=["0","0","0","49","0","0","0","0","0","79","0"];
var mcost=["5","2","22","34","24","27","31","27","12","38","44"];
var length=["24","24","24","18","24","24","24","18","24","24","24"];
*/
function phoneContract(brand, model, network, minutes, texts, data, upcost, monthlycost, length) {
this.brand = brand;
this.model = model;
this.network = network;
this.minutes = minutes;
this.texts = texts;
this.data = data;
this.upcost = upcost;
this.monthlycost = monthlycost;
this.length = length;
}
var contract = [];
contract.push(new phoneContract("Motorola", "StarTAC", "Z-Mobile", "300", "3500", "N/A", "0", "5", "24"));
contract.push(new phoneContract("Nokia", "3310", "O3", "100", "5000", "N/A", "0", "2", "24"));
contract.push(new phoneContract("Apple", "iPhone 5C", "Fodavone", "300", "Unlimited", "250MB", "0", "22", "24"));
contract.push(new phoneContract("Apple", "iPhone 5C", "NN", "1000", "Unlimited", "2GB", "49", "34", "18"));
contract.push(new phoneContract("Samsung", "Galaxy S5", "O3", "500", "Unlimited", "500MB", "0", "24", "24"));
contract.push(new phoneContract("Samsung", "Galaxy S5", "Fodavone", "600", "Unlimited", "1GB", "0", "27", "24"));
contract.push(new phoneContract("LG", "G3", "NN", "1000", "Unlimited", "1GB", "0", "31", "24"));
contract.push(new phoneContract("Nokia", "Lumia 925", "Fodavone", "600", "Unlimited", "500MB", "0", "27", "18"));
contract.push(new phoneContract("LG", "Optimus L7 2", "NN", "250", "5000", "500MB", "0", "12", "24"));
contract.push(new phoneContract("Sony", "Xperia Z3", "O3", "Unlimited", "Unlimited", "1GB", "79", "38", "24"));
contract.push(new phoneContract("Sony", "Xperia Z3", "NN", "Unlimited", "Unlimited", "10GB", "0", "44", "24"));
function checkBrand() {
var phone
var brandCheck;
phone = document.getElementsByClassName("phone");
for (var i = 0; i < phone.length; i++) {
console.log(phone[i].checked)
if (phone[i].checked == true) {
brandCheck = phone[i].value;
}
}
return brandCheck;
}
function checkNetwork() {
var network
var networkCheck
network = document.getElementsByClassName("network");
for (var i = 0; i < network.length; i++) {
console.log(network[i].checked)
if (network[i].checked == true) {
networkCheck = network[i].value;
}
}
return networkCheck;
}
var button = document.getElementById("login");
button.addEventListener("click", search, false);
var minutes
function slidefunction() {
minutes = parseInt(slider.value)
document.getElementById("range").innerHTML = minutes + " Minutes";
console.log(minutes);
}
var slider = document.getElementById("range.slider");
slider.addEventListener("change", slidefunction, false);
function search() {
var brandCheck = checkBrand();
var networkCheck = checkNetwork();
var model
model = document.getElementById("phone_model"); //???
var e
e = document.getElementById("text_m"); //checkbox
var f
f = document.getElementById("internet"); //checkbox
var g
g = document.getElementById("upcost"); //auto
var h
h = document.getElementById("month_cost"); //auto ask
var i
i = document.getElementById("contract_length"); //dropdown
for (var p = 0; p < contract.length; p++) {
if (brandCheck == contract[p].brand || model.value == contract[p].model || networkCheck == contract[p].network || minutes >= contract[p].minutes || e.value == contract[p].texts || f.value == contract[p].data || g.value == contract[p].upcost || h.value == contract[p].monthlycost || i.value == contract[p].length) {
document.write(contract[p].brand + " " + contract[p].model + " " + contract[p].network + " " + contract[p].minutes + " " + contract[p].texts + " " + contract[p].data + " " + contract[p].upcost + " " + contract[p].monthlycost + " " + contract[p].length + " " + "</br>");
}
}
}
请考虑到我是 JS 的新手,但我想在我的作业中做得很好,这是我唯一缺少的功能(这不是必需的,但我想学习如何去做) .
最佳答案
一种简单的方法是将搜索的大 if
block 分解为每个条件的一个 if
。对于每个条件,递增一个指示匹配项数的变量 (matches
)。如果 matches
> 0 且百分比为 100 * matches/total_number_of_conditions
,则契约(Contract)有效。
像这样:
...
var matches = 0;
var total_number_of_conditions = 9;
if (brandCheck == contract[p].brand) matches += 1;
if (model.value == contract[p].model) matches += 1;
if (networkCheck == contract[p].network) matches += 1;
if (minutes >= contract[p].minutes) matches += 1;
if (e.value == contract[p].texts) matches += 1;
if (f.value == contract[p].data) matches += 1;
if (g.value == contract[p].upcost) matches += 1;
if (h.value == contract[p].monthlycost) matches += 1;
if (i.value == contract[p].length) matches += 1;
if (matches > 0) {
var percentage_matched = 100 * (matches / total_number_of_conditions);
document.write(contract[p].brand +
" " + contract[p].model +
" " + contract[p].network +
" " + contract[p].minutes +
" " + contract[p].texts +
" " + contract[p].data +
" " + contract[p].upcost +
" " + contract[p].monthlycost +
" " + contract[p].length +
" " + percentage_matched + "% </br>");
}
...
当然,还有许多其他更可配置和更复杂的解决方案来分离和应用条件,例如“匹配器”对象列表,每个条件一个,等等。
关于javascript - 根据js中的搜索结果计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29682277/
我正在学习构建单页应用程序 (SPA) 所需的所有技术。总而言之,我想将我的应用程序实现为单独的层,其中前端仅使用 API Web 服务(json 通过 socket.io)与后端通信。前端基本上是
当我看到存储在我的数据库中的日期时。 这是 正常 。日期和时间就是这样。 但是当我运行 get 请求来获取数据时。 此格式与存储在数据库 中的格式不同。为什么会发生这种情况? 最佳答案 我认为您可以将
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试使用backbone.js 实现一些代码 和 hogan.js (http://twitter.github.com/hogan.js/) Hogan.js was developed ag
我正在使用 Backbone.js、Node.js 和 Express.js 制作一个 Web 应用程序,并且想要添加用户功能(登录、注销、配置文件、显示内容与该用户相关)。我打算使用 Passpor
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我尝试在 NodeJS 中加载数据,然后将其传递给 ExpressJS 以在浏览器中呈现 d3 图表。 我知道我可以通过这种方式加载数据 - https://github.com/mbostock/q
在 node.js 中,我似乎遇到了相同的 3 个文件名来描述应用程序的主要入口点: 使用 express-generator 包时,会创建一个 app.js 文件作为生成应用的主要入口点。 通过 n
最近,我有机会观看了 john papa 关于构建单页应用程序的精彩类(class)。我会喜欢的。它涉及服务器端和客户端应用程序的方方面面。 我更喜欢客户端。在他的实现过程中,papa先生在客户端有类
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一个图形新手,需要帮助了解各种 javascript 2D 库的功能。 . . 我从 Pixi.js 中得到了什么,而我没有从 Konva 等基于 Canvas 的库中得到什么? 我从 Konva
我正在尝试将一些 LESS 代码(通过 ember-cli-less)构建到 CSS 文件中。 1) https://almsaeedstudio.com/ AdminLTE LESS 文件2) Bo
尝试查看 Express Passport 中所有登录用户的所有 session ,并希望能够查看当前登录的用户。最好和最快的方法是什么? 我在想也许我可以在登录时执行此操作并将用户模型数据库“在线”
我有一个 React 应用程序,但我需要在组件加载完成后运行一些客户端 js。一旦渲染函数完成并加载,运行与 DOM 交互的 js 的最佳方式是什么,例如 $('div').mixItUp() 。对
请告诉我如何使用bodyparser.raw()将文件上传到express.js服务器 客户端 // ... onFilePicked(file) { const url = 'upload/a
我正在尝试从 Grunt 迁移到 Gulp。这个项目在 Grunt 下运行得很好,所以我一定是在 Gulp 中做错了什么。 除脚本外,所有其他任务均有效。我现在厌倦了添加和注释部分。 我不断收到与意外
我正在尝试更改我的网站名称。找不到可以设置标题或应用程序名称的位置。 最佳答案 您可以在 config/ 目录中创建任何文件,例如 config/app.js 包含如下内容: module.expor
经过多年的服务器端 PHP/MySQL 开发,我正在尝试探索用于构建现代 Web 应用程序的新技术。 我正在尝试对所有 JavaScript 内容进行排序,如果我理解得很好,一个有效的解决方案可以是服
我是 Nodejs 的新手。我在 route 目录中有一个 app.js 和一个 index.js。我有一个 app.use(multer....)。我还定义了 app.post('filter-re
我正在使用 angular-seed用于构建我的应用程序的模板。最初,我将所有 JavaScript 代码放入一个文件 main.js。该文件包含我的模块声明、 Controller 、指令、过滤器和
我是一名优秀的程序员,十分优秀!