.push()命令在javascript中不起作用

.push() command in javascript not working?

本文关键字:javascript 不起作用 命令 push      更新时间:2023-09-26

当我尝试将url推入数组然后window.open()数组中的所有url时,我得到一个空错误。我相信这是因为url没有被正确地放在数组中开始。我做错了什么?谢谢。

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
    <form>
        Series Name:
        <input type="text"
            name="series1name"
            id="seriesname"/>
        <br/>
        Series Link:
        <input type="text"
            name="series1link"
            id="serieslink"/>
    </form>
    <div>
        <button onclick="AddSeries()">Add A New Series </button>
    </div>
    <div>
        <button onclick="OpenSeries()">Open Incomplete Series </button>
    </div>
</body>
<script type="text/javascript">
        var urlArray = [];
    function AddSeries() {
        var url = document.getElementById('serieslink');    
        urlArray.push(url);
    }
    function OpenSeries() {
        for (url in urlArray) {
       alert(url.constructor === Array);
           window.open(url, '_blank');
        }
    }
</script>
</html>

如果错误很明显,我很抱歉,我对编码有点陌生,所以我确信这个代码无论如何都不完美。提前谢谢你。

谢谢大家,两个回复的组合让我的代码按照我想要的方式工作。

获取文本框的值,而不是文本框的值

你需要添加文本框的值,而不是文本框本身

var url = document.getElementById('serieslink').value;

运行document.getElementById()时,返回值是一个具有许多属性和方法的对象。您可以在这里阅读有关Element对象的内容。

使用合适的for循环

@Juhana指出

for in循环将为您提供关联数组或对象的键。如果数组是非关联的(JavaScript中所有数组都是非关联的),则使用for of循环代替。你可以在这里阅读

把script标签放到Body

@Xufox指出

<script>标签应该<body>标签内。建议将脚本放在正文的末尾,以减少加载时间。