我的任务是使用javascript和jquery生成一个网页,该网页采用用户提交的字符串并生成该字符串:abcde
=> bcdea
我的问题是,当我尝试运行程序时,没有输出。我检查错误控制台,它说旋转没有定义。我很困惑。
<!doctype html>
<!-- This page demonstrates several string properties and operations -->
<!-- =============================================================== -->
<html>
<head>
<title> String Demo </title>
<script src="..111/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function rotate(s)
{
result = $('#strBox').value;
"rotate:" + result
var result = "";
for (var i = 0; i< s.length; ++i){
result = s.substring(1) + s.charAt(0);
$('#outputDiv').innerHTML =
}
}
</script>
</script>
</head>
<body>
<h2>String Demo</h2>
<p>
Enter a string: <input type="text" id="strBox" size=20 value="">
</p>
<input type="button" value="Click to Process" onclick="rotate();">
<hr>
<div id="outputDiv"></div>
</body>
</html>
答案 0 :(得分:1)
function rotate(s)
{
result = $('#strBox').value;
看起来它会创建一个全局变量,但是你声明它会降低。最好在顶部声明变量,或者至少在首次使用时声明变量。
var result = $('#strBox').value;
$(<selector>)
返回一个jQuery对象。您将获得该对象的value
属性的值,可能您需要所选元素的值(如果有的话)。由于jQuery包装元素,您需要调用函数来访问属性:
var result = $('#strBox').val();
。
"rotate:" + result
相当于一个空语句,结果未分配,因此无效。
var result = "";
啊,有那个讨厌的宣言。作业将在稍后进行。
for (var i = 0; i< s.length; ++i){
result = s.substring(1) + s.charAt(0);
这将为每个字符循环一次字符串,因此您最终会得到您开始使用的字符串。
$('#outputDiv').innerHTML =
jQuery没有innerHTML
属性,DOM对象可以。同样,jQuery需要一种方法来进行属性访问。你需要实际分配一个值,所以:
$('#outputDiv').html(result);
或
$('#outputDiv').text(result);
}
}
但是,由于浏览器在更新DOM之前等待脚本停止运行,因此您无法看到任何更改(无论如何都可能只是模糊)。
您可能想要的是:
<script>
function rotate(element) {
var s = element.form.strBox.value;
document.getElementById('outputDiv').innerHTML = s.substring(1) + s.charAt(0);
}
</script>
<form>
<p>Enter a string: <input type="text" name="strBox" size=20 value="">
<p><input type="button" value="Click to Process" onclick="rotate(this);">
</form>
<hr>
<div id="outputDiv"></div>
请注意,使用表单可以更轻松地访问表单控件,因为它们可用作表单的命名属性。
答案 1 :(得分:0)
函数“rotate”接受一个未使用的参数。
功能旋转 {
结果未定义为另外两行的变量。值不是jQuery对象的属性。
result = $('#strBox').value;
文本“rotate:”+结果未分配给变量且没有分号
"rotate:" + result
var result = "";
此循环不是必需的,只需从字符串中取出第一个字符,将其删除,然后将其添加到字符串的末尾。
for (var i = 0; i< s.length; ++i){
result = s.substring(1) + s.charAt(0);
“innerHTML”不是jQuery对象的有效属性。而且价值没有分配给任何东西。
$('#outputDiv').innerHTML =
}
}