单击以显示具有多个位置的多个hml文件上的电话号码

时间:2019-01-29 15:23:26

标签: javascript html

我有200个html文件,在这里我们必须隐藏电话号码,直到单击文本为止,因此我需要使用GrepWin之类的工具来更改所有文件的内容。我可以使用这段代码来做到这一点,但是问题是,对于同一页面中具有相同内容的所有位置,都需要更改函数名称和ID。因此,此行在同一文件中多次出现:

 <p>
   <b>Contact data: 
 <script>
  function myFunction() {
    document.getElementById("demo").innerHTML = "0316 301 958";} . 
 </script>
 <button id="demo" onclick="myFunction()">Show the number</button>
 <p>
 <b>Contact data: 
 <script>
  function myFunction() {
   document.getElementById("demo").innerHTML = "0316 301 958";} . 
 </script>
   <button id="demo" onclick="myFunction()">Show the number
   </button>

我需要不同的解决方案来更改所有html文件上的所有内容,但要显示数字(所有数字都相同)。此时仅显示一个数字http://jsfiddle.net/qyzkfush/。我可以手动编辑函数名称和按钮ID,但是要更改200个文件内容(每个文件中有很多位置)需要花费一些时间。我需要使用GrepWin搜索代码并将其替换为所有文件。

3 个答案:

答案 0 :(得分:2)

如果确实需要,可以运行以下命令:-

function myFunction(e, phoneNumber) {
  e.innerText = phoneNumber;
}
<p><b>Contact data: 
<button id="demo" onclick="myFunction(this, '0316 301 958')">Show the number</button>

<p><b>Contact data:
<button id="demo" onclick="myFunction(this, '0316 301 957')">Show the number</button>

我只会将其用作快速解决方案,我会与客户谈谈使内容动态化的问题。

答案 1 :(得分:0)

一些指针:

  1. 每页仅添加一次脚本。
  2. 页面上的每个元素必须具有唯一的ID。您不能有多个具有相同ID的元素。
  3. 您不需要按钮即可注意到点击。所有HTML元素均支持点击处理程序。尝试pspan(请参阅Which HTML tags can be used with onClick?

尝试一下:

<p onclick="showPhoneNumber(this)">Click to see phone number.</p>

这会将事件侦听器添加到p元素,它将使用showPhoneNumber元素作为参数调用函数pthis将包含触发事件监听器的元素浏览器评估onclick参数中的短脚本时发生的事件。

该函数将如下所示:

<script> 
  function showPhoneNumber(elem) {
      elem.innerHtml = '0316 301 958';
      return false;
  }
</script>

这也应该可以,但是从HTML来源中抓取电话号码变得很简单:

<p onlick="this.innerHtml = '0316 301 958'; return false;">Click to see phone number.</p>

我相信这是将数字隐藏在单击后的主要原因(=阻止脚本查找它)。

答案 2 :(得分:0)

您可以使用电话号码作为班级名称:

 SELECT t.* FROM YourTable t WHERE t.status = 10 
                            AND
                            (SELECT COUNT(0) x From YourTable t2
                                               where t2.sourceid = t.sourceid) = 1
function myFunction(className) {
[...document.getElementsByClassName(className)].forEach(element => element.innerHTML = className);
}