我的问题是,如果我可以使用数组的长度作为整数值,这里是代码
var contador = 0;
var bannercount = document.getElementsByClassName("bannerlink");
var linkcount = bannercount.length;
var clickcount = new Array(linkcount);
for (var i = 0; i < clickcount.length; i++)
clickcount[i] = 0;
function contarClick(id) {
contador = clickcount[id];
contador++;
clickcount[id] = contador;
contador = 0;
//var imagen = $(identificador + 'img');
//var enlace = document.getElementById(imagen).getAttribute('href');
//alert('tomar conteo:' + contador + ' tomar url' + enlace);
alert("Total de Enlaces en Página: " + linkcount + "\nConteo de Click: " + clickcount[id] + "\nIdentificador de este Enlace: " + id + "\nTamaño del Arreglo: " + clickcount.length);
}
我知道它有点混乱而难以理解,因为它是西班牙语,所以我会解释它:bannercount变量获取我的HTML上有&#39; bannerlink&#39;的所有元素。 class,如果我使用alert(bannerlink.length),它会显示一条包含元素数量的消息,但我无法在其他代码上使用它。
我想要的是linkcount变量获取bannercount变量的长度并将其设置为clickcount数组的大小。如果我将linkcount设置为数字,我的其余功能完全正常,但是当我插入bannercount.length时它不起作用。我不明白为什么,因为当我在其他阵列上使用它时,它确实有效。
这个脚本应该计算我的href标签的点击次数,具体取决于我为它们设置的类,如果我手动设置数组大小但我希望它自动化,任何建议,它确实可以正常工作吗? / p>
两小时后编辑,根据您的建议,即使它不能很好地工作,它也有所改进,但点击次数没有正确递增,这是我的新代码,感谢您的所有答案。 href的计数器应该单独启动,它用于记录每个href的点击量,然后我将发送到我的SQL数据库(上帝知道如何因为javascript无法连接到mySQL但我会想到一些东西)。它也会影响我在ASP.NET上运行吗?
<script type="text/javascript">
var bannercount = document.getElementsByClassName("bannerlink");
var clickcount = [];
clickcount.length = bannercount.length;
function contarClick(id) {
clickcount[id] = clickcount ? clickcount + 1 : 1;
alert("Total de Enlaces en Página: " + bannercount.length + "\nConteo de Click: " + clickcount[id] + "\nIdentificador de este Enlace: " + id + "\nTamaño del Arreglo: " + clickcount.length);
}
</script>
答案 0 :(得分:3)
您似乎只希望clickcount
充满0。
删除此:
var clickcount = new Array(linkcount);
for (var i = 0; i < clickcount.length; i++)
clickcount[i] = 0;
并替换为:
var clickcount = [];
for(var i = 0; i < linkcount; i++){
clickcount.push(0);
}
答案 1 :(得分:0)
另一种选择是首先不要将数组设置为零。你可以这样做:
var clickcount = [];
然后这个:
function contarClick(id) {
clickcount[id] = clickcount[id] ? clickcount[id] + 1 : 1;
}
第一次点击clickcount[id]
将是未定义的,这是假的,所以它将被分配1.所有其他情况下它将增加1.
此外,您的原始代码实际上没有任何问题:
var bannercount = document.getElementsByClassName("bannerlink");
var linkcount = bannercount.length;
var clickcount = new Array(linkcount);
for (var i = 0; i < clickcount.length; i++)
clickcount[i] = 0;
alert(clickcount);
<a class="bannerlink">link1</a>
<a class="bannerlink">link2</a>
<a class="bannerlink">link3</a>
<a class="bannerlink">link4</a>
0,0,0,0
这正是您所期望的。
以下是使用我的建议的一个工作示例:
var bannercount = document.getElementsByClassName("bannerlink");
var linkcount = bannercount.length;
var clickcount = []
function contarClick(id) {
clickcount[id] = clickcount[id] ? clickcount[id] + 1 : 1;
alert(clickcount);
}
var links = document.getElementsByClassName("bannerlink");
for (var i = 0 ; i < links.length; i++) {
links[i].addEventListener("click", function() {
contarClick(this.id);
});
}
<a class="bannerlink" id="0">link1</a>
<a class="bannerlink" id="1">link2</a>
<a class="bannerlink" id="2">link3</a>
<a class="bannerlink" id="3">link4</a>