0
我有这样的HTML代码的test.html:如何在阵列添加/校验值与JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="jquery.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
$(document).ready(function() {
var course_data;
$.get('exerc.xml', function(data) {
course_data = data;
var that = $('#courses');
$('course', course_data).each(function() {
$('<option>').text($(this).attr('title')).appendTo(that);
});
}, 'xml');
$('#courses').change(function() {
var val = $(this).val();
var that = $('#times').empty();
$('course', course_data).filter(function() {
return val == $(this).attr('title');
})
.find("lesson").each(function() {
$("#lesson").val($(this).text());
});
});
});
</script>
<script type="text/javascript">
function keyPressed(event, input) {
if (event.keyCode == 8) {
// Allow backspace
return true;
}
// Detect character code: event.which on Firefox, event.keyCode on IE
var char = event.which ? event.which : event.keyCode;
// Convert to string
char = String.fromCharCode(char);
var exerc = new Array();
exerc = "1234 1234 1234";
// Compare to character in match string and return result
return (exerc.charAt(input.value.length) == char);
}
</script>
</head>
<body>
<form method="post" action="">
<input type="text" size="90" id="lesson" />
</form>
<form id="form2" name="form2" method="post" action="">
<input size="90" type="text" class="textarea" onkeypress="return keyPressed(event, this);" />
</form>
<form name="form1">
<p>exercices
<select style="width:100px" id='courses'>
<option selected="selected">choose...</option>
</select>
</form>
</body>
</html>
这是我的xml文件exerc.xml:
<?xml version="1.0" encoding="utf-8"?>
<courses>
<course title="exercise 1">
<lesson>1234 1234 1234</lesson>
</course>
<course title="exercise 2">
<lesson>5678 5678 5678</lesson>
</course>
<course title="exercise 3">
<lesson>9012 9012 9012</lesson>
</course>
</courses>
那么,第一个代码中有两个输入字段。在第一个输入中输入来自xml文件(解析器方法)的数据。这取决于从下拉菜单中选择。在第二次输入中,我使用了一个函数(keyPressed),它允许我输入第一个输入中描述的相同数据,但按顺序依次输入。第一项练习很适用。问题是我想用更多的练习。我添加了一个更多的练习像这样的阵列:
var exerc = new Array();
exerc[0]= "1234 1234 1234";
exerc[1] = "5678 5678 5678";
exerc[2] = "9012 9012 9012";
我改变了第一个功能keyPressed,但它是行不通的。 Beybe它是完全错误的:
function keyPressed(event, input) {
if (event.keyCode == 8) {
return true;
}
var char = event.which ? event.which : event.keyCode;
char = String.fromCharCode(char);
var exerc = new Array();
exerc[0]= "1234 1234 1234";
exerc[1] = "5678 5678 5678";
exerc[2] = "9012 9012 9012";
for (i=0;i<exerc.length;i++){
document.getElementById("courses").selectedIndex;
}
return (exers.charAt(input.value.length) == char);
}
我使用这个练习就像一个游戏。我可以添加或从XML文件中删除练习,并学习提供密钥。也许这里很多人很愚蠢,但我觉得它很有趣。所以,我在这里堆叠。任何建议如何解决它?提前致谢。
只是我的意见,但我会采取函数调用了标记和使用jQuery的:'$(“文本区域”)按键(函数(事件){的keyPressed(事件,这一点);}) ;' – 2012-02-20 12:32:48
所以,这是另一种解决方案?它看起来像更复杂... – billaki 2012-02-20 12:51:12
不是另一种解决方案,只是改善你的代码 - 我相信将所有代码从标记中移出,包括事件管理 - 把我在JavaScript代码库中记录的事件管理器放在里面,在标记中。 – 2012-02-20 13:06:26