-1

我一直在尝试使用 Javascript 练习一些练习。以下是我一直面临的一些挑战。如果有错误或我遗漏的东西,请提出建议。

注意:我不想在这个阶段使用 Jquery。

锻炼:

要求用户输入一些文本。单击按钮时,输入的文本需要显示为旋转。

  1. 我采取的第一种方法第一次得到了结果。但是,如果我输入一个新文本,然后单击按钮,则旋转会在旧文本和新文本之间波动。我不确定我的解释是否正确。这是第一次尝试:

测试结果: http: //learningharvest.co.in/

<!DOCTYPE html>
<html>
<head>

</head>
<body>
<p>Enter the text to be reversed</p>
<div id="texttoberotated">
<input type="text" id="texttobeRot"></p>
</div>
<div>
<button id="rotateText">Rotate Text</button>
<p id="rotatedText"></p>
</div>

<script>

document.getElementById("rotateText").onclick=function (){
var text=null;
text= document.getElementById("texttobeRot").value;
var finaltext=text;
document.getElementById("rotatedText").innerHTML=finaltext;
setInterval(rotatetext, 500);
var numberofRotations=0;
var length=0;
length=text.length;
var i=0;
function rotatetext(){
i=length;

if(numberofRotations<=text.length){

getText();
}else{
numberofRotations=0;
length=text.length;
i=length;
preText=null;
postText=null;
finaltext=null;
getText();
}
} 
function getText(){ 
preText=text.slice(length);
postText=text.slice(0,i);
i--;
finaltext=preText+" "+postText;
numberofRotations++;
length--;
document.getElementById("rotatedText").innerHTML=finaltext;
}
}

</script>
</body>

2. 我做的第二次尝试是使用 childNodes 方法。但是,我无法获取输入标签的 nodeValue。如果我尝试使用任何其他元素,而不是输入元素,nodeValue 就可以工作。

此外,函数 rotatetext 在页面加载时执行,而不是在单击按钮时执行。如果我在按钮标签本身中内联添加 onclick 事件,效果很好。

这是我在控制台中遇到的错误:

旋转文本父子方法.html:27 未捕获的类型错误:无法在旋转文本父子方法中读取未定义的属性“nodeValue”(旋转文本父子方法。html:27)旋转文本父子方法。html:23

这是我到目前为止起草的正文内容。在这个阶段,我只是想用用户输入的文本替换文本“在此处显示旋转文本”。

<body>
<p>Enter the text to be reversed</p>
<input type="text" id="texttobeRot">
<button id="rotateText">Rotate Text</button>
<p id="rotatedText">Show Rotated Text here</p>
<script>
document.getElementById("rotateText").onclick= rotatetext();
function rotatetext(){
var element=document.getElementById("texttobeRot");
var textNode=element.childNodes[0];
var text=textNode.nodeValue;
var texttobeRotated;
texttobeRotated= text;
document.getElementById("rotatedText").innerHTML=texttobeRotated;
};

期待您的所有意见。

4

1 回答 1

0

如果添加,则使用第一种方法

  document.getElementById("texttoberotated").onkeyup = function() {
        text = '';
      }

在您的脚本底部,当您开始键入时,它将清除文本值,您可以输入一个新单词,而不会像您描述的那样将它们混杂在一起。

我在https://codepen.io/chaosmaths/pen/LrwrpQ上放置了您的代码的工作示例

于 2018-07-08T08:32:24.350 回答