这会正确循环并能够列出标签名称吗?

时间:2016-11-03 01:40:42

标签: javascript

我想提示用户输入一个标记,它会在console.log中列出标记,然后再次询问,直到他们输入"quit"。如果发生这种情况,那么我将使用documentwriteinnertext列出之前搜索过的标签。

var selector = prompt("Please enter a selector: ");
var selectorr = document.getElementsByTagName(selector);
var breaker = "quit";
breaker = false;
var textlogger = "elements have been found that match the selector ";
var lengthfinder = selectorr.length;
while(true) {
    console.log(lengthfinder + textlogger + selector);
    if (selector == breaker) {
        for (var i=0; i<divs.length; i++) {
            document.write.innerText(textlogger);
        }
    }
} 

3 个答案:

答案 0 :(得分:0)

这是一个版本,其中包含有关在何处放置必要代码以便工作的注释和建议。

Code Preview

var breaker = "quit",
textlogger = "elements have been found that match the selector ",
textList = new Array();

while (true) {
 var selector = prompt("Please enter a selector: ");
 if (selector == breaker) {
  /*
  Write your necessary output here
  */

  /*
  After output you break out
  */
  break;
 } else {
  /*
  Write It inside list
  */
  textList.push(selector);
 }

 /*
 Write necessary output in console
 */
 console.log(selector);
}

答案 1 :(得分:0)

如果你想尝试jQuery和一些有趣的东西,请选择:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Loop with jquery deferred</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
        var loop = function () {
            return $.Deferred(function (deferred) {
                var selector = prompt("Please enter a selector: ");
                var quit = 'quit';
                var selectors = [];
                while (selector && selector != quit) {
                    selectors.push(selector);
                    var elements = $(selector);
                    console.log(elements.length + " elements have been found that match the selector " + selector);
                    selector = prompt("Please enter a selector: ");
                }
                if (selector)
                {
                    deferred.resolve(selectors);
                }
                else
                {
                    deferred.reject();
                }
            }).promise();
        };
        $(function () {
            loop().done(function (selectors) {
                $($.map(selectors, function (item, index) {
                    return '<div>' + item + '</div>';
                }).join('')).appendTo($('body'));
            });
        });
    </script>
</head>
<body>
    <div>
        <iframe src="http://stackoverflow.com/questions/40392515/will-this-loop-correctly-and-be-able-to-list-tag-names"/>
    </div>
</body>
</html>

答案 2 :(得分:0)

  

我想提示用户输入标签,然后将其列入   console.log并将再次询问,直到他们键入&#34;退出&#34;

&#13;
&#13;
while ("quit" !== prompt("Tag name selector, type `quit` to exit", "quit")) {
  console.log("in loop");
}

console.log("exit loop");
&#13;
&#13;
&#13;

  

我将使用documentwrite列出innertext中的内容   之前的标签已被搜索过。

您可以使用:document.write("some text")附加到现有的dom,也可以使用selectorr[i].innerText="some text"

以下是我可以帮助您的小例子:

&#13;
&#13;
var selector;
while ("quit" !== (selector = prompt("Tag name selector. Use `quit` to cancel search", "quit"))) {
  var elements = document.getElementsByTagName(selector);
  var count = elements.length;
  while (count--) {
    elements[count].innerHTML += " [matched]";
  }
}
&#13;
<span>This is my &lt;span&gt; tag 1</span>
<p>This is my &lt;p&gt; tag 1</p>
<div>This is my &lt;div&gt; tag 2</div>
<p>This is my &lt;p&gt; tag 3</p>
<span>This is my &lt;span&gt; tag 2</span>
&#13;
&#13;
&#13;