HTML / JavaScript / jQuery:on(" click",...)和变量incrimenting

时间:2016-07-05 18:25:26

标签: javascript jquery

我正在制作一款应用来帮助我找到工作。基本上,1。我有一系列公司网站,2。按钮点击以在新标签中加载companiesList [i],以及3. a

div添加公司列表中包含的网站[i] ]跟踪当前会话访问了多少和哪些网站。

我遇到的两个主要问题是 1.我所拥有的功能("点击",...)在页面加载时运行,而不是在我点击按钮时运行,当我点击按钮时,唯一发生的事情就是控制台显示"不推荐使用getPreventDefault()。请改用defaultPrevented。" 2.我当前的索引一直在重置(或者根本没有递增)到0,所以即使我按下按钮,我仍然会一遍又一遍地加载相同的网站,而不是加载包含在中的下一个网址。数组。

到目前为止,这是我的代码:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
    </head>
    <body>
        <div id="Next Company's Website Button">
            <input type="button" id="nextWebsiteButton" name="filter" value="Next Company's Website Button" />
        </div>


        <div id="Current Session">
            <p>
            </p>
        </div>

    <script src="companiesList.js"></script> /*Sample for StackOverflow: var companyList = [
"http://visual.ly/", "http://zesty.com/"];*/
    <script>
    var i = 0;
    var countForSession = 1;

    var nextCompany = function nextCompany() {
        i++;
        var win = window.open(companyList[i], '_blank');
        win.focus();S
    };

    $("#nextWebsiteButton").on("click", nextCompany());


    //For use with on("click")
    var runProgram = function() {
        //load next website
        //i++ for array index
        //Add current website to html div text, format: countForSession + ". " + "company " + i + companyList[i] + \n
    };

    </script>
    </body>
    </html>

2 个答案:

答案 0 :(得分:2)

它立即执行的原因是由于以下行:

$("#nextWebsiteButton").on("click", nextCompany());

将其更改为:

$("#nextWebsiteButton").on("click", nextCompany);

通过向函数添加括号,您告诉javascript编译器立即执行该函数并使用该函数的结果作为单击处理程序。

答案 1 :(得分:1)

由于某种原因,你有一个额外的prettyPrintObjectMapper = new ObjectMapper(); prettyPrintObjectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); //turn on prettyPrintObjectMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); String tmp1 = prettyPrintObjectMapper.writeValueAsString(myObject); ,你不应该有括号。这是更新的代码:

S

如果你想获得第一个索引,你还需要将var i = 0; var countForSession = 1; var companyList = ["http://visual.ly/", "http://zesty.com/"]; var nextCompany = function() { var win = window.open(companyList[i], '_blank'); win.focus(); i++; }; $("#nextWebsiteButton").on("click", nextCompany); //For use with on("click") var runProgram = function() { //load next website //i++ for array index //Add current website to html div text, format: countForSession + ". " + "company " + i + companyList[i] + \n }; 放在后面。我还要添加一个if / else来检查下一页是否存在。 这是一个更新的小提琴:JSFiddle