jquery を使用して次のことを行います。
- ユーザー入力を数回取得し、入力を div に追加します。
- ユーザーの各入力を 1 つの配列に格納して、保存できるようにします。
- 入力値が追加された div 内の入力をユーザーがクリックしたときに、入力値を (配列内の特定のインデックスで) JavaScript 関数 (検索) に渡すことができるようにします。
これまでの私のコードは次のとおりです。
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type = "text/javascript" src='script.js'>
</script>
<title></title>
</head>
<body>
<form name="searchForm">
<input type="text" id="search" placeholder="Enter Card Name" name="searchItem"/>
</form>
<div id="button">Search!</div>
<br/>
<div id="output"></div>
<div id="save"></div>
</body>
</html>
Javascript:
function Vanguard(name,grade,skill,power,shield,critical, type, nation, clan, race){
this.name = name;
this.grade = grade;
this.skill = skill;
this.power = power;
this.shield = shield;
this.critical = critical;
this.type = type;
this.nation = nation;
this.clan = clan;
this.race = race;
};
var asurakaiser = new Vanguard("Asura Kaiser", 3, "Twin Drive!!", 11000, 0, 1, "Normal Unit", "Star Gate", "Nova Grappler", "Battleroid");
var kingofknightsalfred = new Vanguard("King of Knights, Alfred", 3, "Twin Drive!!", 10000, 0, 1, "Normal Unit", "United Sanctuary", "Royal Paladin", "Human");
var units = new Array(asurakaiser, kingofknightsalfred);
function printVanguard(p){
document.getElementById('output').innerHTML +=("<hr />");
document.getElementById('output').innerHTML +=("Name: " + p.name);
document.getElementById('output').innerHTML +=("<br />Grade: " + p.grade);
document.getElementById('output').innerHTML +=("<br />Skill: " + p.skill);
document.getElementById('output').innerHTML +=("<br />Power: " + p.power);
document.getElementById('output').innerHTML +=("<br />Shield: " + p.shield);
document.getElementById('output').innerHTML +=("<br />Critical: " + p.critical);
document.getElementById('output').innerHTML +=("<br />Type: " + p.type);
document.getElementById('output').innerHTML +=("<br />Nation: " + p.nation);
document.getElementById('output').innerHTML +=("<br />Clan: " + p.clan);
document.getElementById('output').innerHTML +=("<br />Race: " + p.race);
document.getElementById('output').innerHTML +=("<br />");
};
var search = function(name){
for (i = 0; i < units.length; i++){
if (units[i].name === name) {
printVanguard(units[i]);
}
}
};
$(document).ready(function() {
$('#button').click(function(){
var output = $('input[name=searchItem]').val();
$('#output').append("<br />" + '<div class="item2">' + output + '</div>');
$('#output').click(function(){
$('#save').append(search(output));
});
});
});
したがって、基本的にjquery部分を見てください...ユーザーがボタンをクリックすると、入力が変数「出力」に保存されます(振り返ってみると混乱するので、なぜその名前を選んだのかわかりません)。とにかく、次の行では、変数出力が div 出力に追加されます。また、ユーザーが div 内の出力自体をクリックすると、ユーザーの入力をパラメーターとして受け取る関数 (検索) が追加されます。
しかし、コードに何か問題があります...引用符なしで「Asura Kaiser」と入力すると、名前をクリックすると、search(「Asura Kaiser」) を呼び出す検索関数に基づいてすべての正しいデータが表示されます。しかし、この結果をクリックすると、同じデータが再び表示されます。「King of Knights Alfred」のように別の名前を引用符なしで入力しようとすると、「King of Knights Alfred」の結果に加えて「Asura Kaiser」の結果が表示されます。
基本的に、出力変数がデータか何かを蓄積しているように見えます。
ユーザーの各入力を配列の一意の要素に格納し、検索関数のパラメーターに入れるときにその特定の要素を呼び出すと、プログラムを正しく動作させることができるはずです。
どんな助けでも大歓迎です。明確にするために、私が探しているのは、非常に多くのユーザー入力を保存し、それらを配列内のインデックスに基づいて検索関数に一意のパラメーターとして渡すことができる方法です。
配列内のインデックスの search(output[i]) のようなもの。
このプログラムの全体的な目標は、人々がカードファイトと呼ばれる人気カードゲームのカード情報を検索できるようにすることです!! ヴァンガード。基本的には、カードを探してデッキを組むプログラムを作ることを目指しており、ここからが長いプロセスの始まりです。
読んでくれてありがとう!