检查空的 "href" 并在空的情况下附加锚文本

Checking for empty "href" and appending anchor text if it is empty

我在 Javascript 中有一个函数,它应该遍历 link 的 table 以检查 href 是否为空。如果 href 为空,它会在锚点之间添加一个文本块以指示尚未添加 link。我的代码如下:

function isWorking(){
    //Variable declaration
    var anchor, rows, i, link, x, y;
    anchor = document.getElementById("myTable");
    rows = anchor.getElementsByTagName("TR");
    for(i = 0; i < (rows.length - 1); i++){
        x = rows[i].getElementsByTagName("A");
        link = x.getAttribute("href");
        y = link.getElementsByTagName("FONT")[0];
        if(link = ""){
            y.innerHTML += "<b><font color=red> (not added yet)</font></b>";
        }
    }
}

目前,它并没有真正做任何事情。我对 Javascript 不是很精通,所以我很难理解可能需要更改哪些内容才能使此代码正常工作。

编辑:这是我在 HTML 中使用的 table 的示例:

    <table id="myTable">
            <tr><td><a href="" target="_blank"><font size="4" color="white">C</a></font></td></tr>
        <tr><td><a href="" target="_blank"><font size="4" color="white">A</a></font></td></tr>
        <tr><td><a href="" target="_blank"><font size="4" color="white">B</a></font></td></tr>
    </table>

在示例中,我包括 3 个空白 link(A、B 和 C)。由于每个 links href 都是空的,我想在代码中的 if 中附加文本。

您缺少要比较的 == 运算符。

<input type=button id="links" text="Switch Mode" onclick="toggle_visibility()" class="" value="Check Link">
<br>
<a id='not_null' href=""></a>

function toggle_visibility() {    
         var x = document.getElementById('not_null');
         link = x.getAttribute("href");

         if (link =="")//Here you are missing
         {           
         alert("true! This is null");
         }      

  }

if(link = "") 无效。您正在通过 = 运算符定义值。它应该是 if(link == "").. 你的代码也可以缩小 - 真的不知道你在定义 table 和行。只是为了得到一个link?更好的方法:

var links = document.querySelectorAll('#mydiv a'),
// gets all a links inside [mydiv] div...
i, href;

for(i = 0; i < links.length; i++) {
  href = links[i].getAttribute('href');
  //check the length of href.. is it less than 1 or is a space
  if(href.trim().length < 1) {
    alert(i + ' is null: ' + href);
  }

}

Here is a working example

下一行有错误

link = x.getAttribute("href");

x = rows[i].getElementsByTagName("A"); 这样声明了returns 元素的集合。所以要使用函数 getAttribute,你应该将它应用到元素上,如下所示

if(x.length>0)
link = x[0].getAttribute("href");

您接下来的陈述需要相应修改。 link.GetElementByTagName 将不起作用,因为 link 没有任何 DOM 元素,只有一个字符串值。

你可以现场试一下here

快速简单:

function checkTableHref() {
        var elem = document.getElementsByTagName('a');
        for (i = 0; i < elem.length; i++) {
            if (elem[i].getAttribute("href") == "") {
                alert(null);
            }
            else {
                alert("Not Null");
            }
        }
    };

和html:

<table id="myTable">
    <tr>
        <td><a href="" target="_blank"><font size="4" color="white">C</a></font></td>
    </tr>
    <tr>
        <td><a href="" target="_blank"><font size="4" color="white">A</a></font></td>
    </tr>
    <tr>
        <td><a href="" target="_blank"><font size="4" color="white">B</a></font></td>
    </tr>
</table>