2016-03-14 60 views
-1

更换(我是比较新的JS,因此愚蠢的错误,你可能会看到我做,谢谢。)的Javascript导致所有HTML通过串

我不知道为什么会这样,特别是当我不告诉页面添加或删除任何元素时。但基本上,当我运行某些脚本时,除了在代码中某处使用的随机值外,整个屏幕都变为空白。

一个可以在任何地方工作的例子是呼叫prompt()而不将结果保存为变量(或者只是运行诸如javascript:"string"之类的东西)。现在这是部分可以理解的。该页面不知道如何处理返回的值,因此只显示它。随你。

然而,同样的事情发生在运行这个脚本(这实际上是Quizlet的原始Scatter Hack)。运行时,它会逐个处理所有散布条件,用HTML内容提醒用户,并更改框的位置。但是,最后一次警报关闭后,整个屏幕将变为白色,并在屏幕左上角显示“300px”。注释掉第5行(// x[i].style.left = "300px";)只是使其显示“600px”。

这似乎是一个足够简单的脚本......这里发生了什么?

var x = document.getElementsByClassName("scatterTermSide lang-en TermText"); 
for (i = 0; i < x.length; i++) { 
    alert("Found item \"" + x[i].innerHTML + "\"."); 
    x[i].style.left = "600px"; 
    x[i].style.top = "300px"; 
} 

最后我要扩展这个所以移动非英语砖和你悬停在您的鼠标以及瓷砖(是的,他们永久鼠标悬停后更改类名),但在我解决这个问题之前,这是无法实现的。
我正在运行这个的Scatter游戏可以找到here

+0

在其浏览器这个问题发生? – Tim

+0

你的代码适合我。你如何执行你的代码块? –

+0

请提供可重复发现问题的代码示例。在[我可以在这里询问什么主题?](http://stackoverflow.com/help/on-topic) – Roberto

回答

0

确保您的书签正确地使用了uri编码。使用像http://mrcoles.com/bookmarklet/这样的工具来确保它是。当我这样做时,你的代码在提供的Scatter Quiz上工作得很好。

最终产品是这样的:

javascript:(function()%7Bvar%20x%20%3D%20document.getElementsByClassName(%22scatterTermSide%20lang-en%20TermText%22)%3B%20for%20(i%20%3D%200%3B%20i%20%3C%20x.length%3B%20i%2B%2B)%20%7B%20alert(%22Found%20item%20%5C%22%22%20%2B%20x%5Bi%5D.innerHTML%20%2B%20%22%5C%22.%22)%3B%20x%5Bi%5D.style.left%20%3D%20%22600px%22%3B%20x%5Bi%5D.style.top%20%3D%20%22300px%22%3B%20%7D%7D)()

+0

奇怪的是,使用小书签编码器解决了这个问题。我不知道为什么,似乎所有其他书签我写了没有编码工作...无论如何,标记为最佳答案。 –

0

您所描述的内容听起来像是语法错误。根据您编写的代码,您获得的结果应该是不可能的。对我而言,这是一个红旗,代码中某处存在缺失或类似问题。我建议评论代码块,直到您可以删除该问题。你在这里发布的代码没有问题,在一个小提琴中很棒。

+0

谢谢你告诉我有什么不对。你能否告诉我一些有用的东西(例如,什么是错的)。 –

+0

对不起老兄,看不到你的代码。我只能确认你提供的代码不是问题。 – Observer

+0

我提供的代码片段是迄今为止我的脚本的全部内容。 –